Filter
-
Equality condition(相等条件)
for user in users filter user.age=="18" return user
-
Range conditions(范围条件)
for user in users filter user.age >"18" return {name:user.name,age:user.age}
-
Multiple conditions(多条件)
for user in users filter user.age>="18" filter user.sex !=null return {name:user.name}
注意:上面的写法还可以用布尔运算中的AND。
for user in users filter user.age>="18" and user.sex !=null return {name:user.name}
-
Alternative conditions(二选一)
若想文档满足一个或另一个条件,也可能是不同的属性,则使用OR
for user in users filter user.name=="Anna" OR user.name=="Annie" return {name:user.name , age:user.age}
注意:上面代码中必须是
==
,单=
会报错。
Limit
可能并不总是需要返回FOR循环通常会返回的所有文档。在这些情况下,我们可以使用LIMIT()操作限制文档数量。将结果中的元素数量减少到最多指定的数量,可选择跳过元素(分页)。
语法一:
LIMIT后面跟着一个最大文件数的数字。
例如:在users集合中只想要4条数据的实现如下:
for user in users
limit 4
return {name:user.name}
语法二:
它允许跳过一定数量的记录并返回下一个n个文档。
例如:limit 4,5的意思就是跳过前面4个并返回后面5个数据
for user in users
limit 2,5
return user.name
上面代码中limit 2,5
是跳过前2个返回后面的5个数据(因为后面的数据不够5个),效果图如下所示:
温故
如果想让上面的名字按顺序排列呢?是不是就用到了sort这个关键字呢?好,先将集合users中的数据循环显示出来(便于后面可以清晰的看结果):
for user in users
sort user.name
return user.name
接下来只显示4条数据:
for user in users
sort user.name
limit 4
return {name:user.name}
那么我只想要第3,4,5条数据(即名字为Anna、Annie和linda),又该如何写呢?
for user in users
sort user.name
limit 2,5
return user.name