如何从ArangoDB集合中接收超过1000个文档?

7

我有一个集合,其中包含3000万个文档。我想通过AQL查询接收所有文档。我这样做:

FOR c IN MyCollection SORT c.value ASC LIMIT 30000000 RETURN c.id

但是我只收到了1001个文档。为什么呢?


你使用的是哪个驱动程序/API?光标接口使用1000批次向客户端传输。 - fceller
我正在使用标准的Web界面,它允许执行AQL查询。在这种情况下,我该如何接收所有文档? - jonua
1个回答

9
网页界面中的AQL编辑器底部有一个下拉框,可以指定要获取的文档数量上限。默认情况下,所选值为1000,因此只会获取1000个文档。
您可以使用该下拉框将数量增加到5000个结果。但是,请注意这个值是任意设置的上限,它可以保护您免受一些错误操作的影响,例如尝试将30M个文档获取到您的浏览器中,这是不可行的操作(您的浏览器很可能会耗尽内存或在尝试呈现30M行HTML时停止运行)。请谨慎设置上限数量。

这是否意味着,如果我没有将最大数量设置为超过1000,无论如何游标都不会给我超过1000个文档?我以为游标会将结果分成多个批次,每个批次限制为1000个文档? - Loredra L
游标默认的批大小为1000。如果查询产生更多结果,游标可以使用多个批次获取它们。这也是我们大多数驱动程序的操作方式。然而,在3.1及之前的Web界面似乎使用单个批次获取所有查询结果,并使用用户指定的结果限制作为批量大小。这在3.2中已经改变:Web界面现在将以1000个批次获取结果。我们仍然默认限制Web界面中的结果数量,以保护用户的浏览器免受获取和显示巨大查询结果时的崩溃。 - stj
我向我的同事建议将结果限制(例如“1000个结果”或“所有结果”)存储在本地存储中,以便选择自动记忆,不需要一直调整。我认为这可以在3.2beta2中实现。 - stj
仅作为一则侧记,你们团队与社区的沟通非常出色。这也是我们选择Arangodb而非其他数据库的原因之一。 - Loredra L
看起来这个驱动程序不支持ArangoDB的完整游标API。通常使用HTTP POST到/_api/cursors创建游标,然后批量获取结果。默认批处理大小为1000。驱动程序只会获取第一批,而不是任何剩余的批次。似乎可以通过某种方式设置“BatchSize”属性,使所有结果都进入第一批。 - stj
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接