【AQL】LIMIT操作

LIMIT operation in AQL

LIMIT操作

使用LIMIT操作可以将结果数量限制在指定的数值范围内,可以使用偏移量来实现分页

语法

两种常用的语法:

LIMIT count
LIMIT offset, count

第一种形式只允许指定计数值,而第二种形式允许指定偏移量和计数值。使用偏移值为0的第二种形式时,第一种形式是相同的。

使用

FOR u IN users
  LIMIT 5
  RETURN u

上面的查询返回了用户集合中的五个文档。它也可以写成 LIMIT 0, 5,得到同样的结果。它返回哪些文档是任意的,因为集合中没有定义文档的顺序。 LIMIT 操作通常应该伴随一个 SORT 操作来明确指定排序顺序,除非任何五个文档对你都是可接受的。但是,还要考虑如果你多次运行查询,并且使用不同的 LIMIT 偏移量进行分页,如果排序顺序未定义,则可能会错过结果或得到重复的结果。

如果多个文档包含相同的SORT属性值,则结果集不包含固定顺序的绑定文档,因为它们之间的顺序未定义。此外,如果没有唯一值可以排序,SORT操作不能保证稳定的排序。

如果需要一个固定的总顺序,你可以使用一个tiebreaker。按另一个可以打破平局的属性排序。如果应用程序有一个首选属性,指示具有相同值的文档的顺序,那么使用这个属性。如果没有这样的属性,你仍然可以通过使用_id系统属性来实现稳定的排序,因为它在每个文档中都是唯一的。

FOR u IN users
  SORT u.firstName, u._id // break name ties with the document ID
  LIMIT 5
  RETURN u

偏移值指定应跳过结果中的多少个元素。它必须是 0 或更大。计数值指定结果中最多应包含多少个元素。

FOR u IN users
  SORT u.firstName, u.lastName, u.id DESC
  LIMIT 2, 5
  RETURN u

在上面的例子中,用户的文档被排序,前两个结果被跳过,查询返回接下来的五个用户文档

变量、表达式和子查询不能用于偏移和计数。偏移和计数的值必须在查询编译时已知,这意味着您只能使用数字文本、绑定参数或可以在查询编译时解析的表达式。
在查询中使用 LIMIT 与其他操作相关时具有意义。特别是 FILTER 之前的 LIMIT 操作可能会显著改变结果,因为这些操作是按照它们在查询中写入的顺序执行的。有关详细示例,请参阅 FILTER。

在查询中,LIMIT操作与其他操作的关系非常重要。特别是在FILTER操作之前使用LIMIT,可能会对查询结果产生显著的影响,因为查询中的操作是按照书写的顺序执行的。

在以下示例中,LIMIT操作并不影响写入操作(INSERT,UPDATE,REPLACE,REMOVE,UPSERT)本身,而仅仅限制了这些操作返回结果的数量。即使指定了LIMIT 2,依然会创建五个文档,LIMIT操作只是将查询(通过RETURN语句)返回的文档数量限制为前两个:

FOR i IN 1..5
  INSERT { value: i } INTO coll
  LIMIT 2
  RETURN NEW
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值