gpt4 book ai didi

node.js - 按复合索引排序的集合分页?

转载 作者:太空宇宙 更新时间:2023-11-04 02:59:02 27 4
gpt4 key购买 nike

我的 articles 集合中有一个复合索引,如下所示:{ _id: -1, votes: -1 },这样我就可以对文档进行排序,根据这些文档,我可以将高票数文章放在最前面,然后按降序排列最新文章。

问题是我不确定如何使用我需要的排序顺序对该集合进行分页,因为我不确定光标修改查询的顺序。

例如:

Articles.find().sort('-_id -votes').skip(20).limit(30)

mongodb 如何返回该查询的文档?它是否根据命令在驱动程序上执行的顺序修改光标,或者是否重新排序它们,以便在排序之前发生限制或执行与我认为的执行方式不同的任何操作?

最佳答案

首先,正如 Tyler 所说,如果您想首先按投票排序,您的索引应该以“votes: -1”开头。

其次,回答您的主要问题:应用 sort()、skip() 和 limit() 的顺序并不重要,只要在从游标获取结果之前应用它们即可。使用这些的查询将始终首先排序,然后跳过,然后返回限制指定的尽可能多的文档。

因此,查询“Articles.find().sort({votes: -1}).skip(20).limit(10)”将跳过投票最高的 20 篇文章,然后返回 10 篇。但是,“Articles.find().sort({votes: -1}).limit(10).skip(20)”会返回相同的结果!在您的具体示例中,它将跳过 20 个文档,然后返回 30 个文档。

有关更多信息,请查看文档:http://docs.mongodb.org/manual/core/read-operations/

关于node.js - 按复合索引排序的集合分页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18833599/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com