我的数据如下所示:
{ _id: 1, x: "abc", y: "def"}
{ _id: 2, x: "abc", y: "efg"}
{ _id: 3, x: "xxx", y: "xxx"}
我的查询如下所示:
db.col.aggregate([{ $sort: { x: 1 } },{ $skip: 0 } ])
当我运行该查询时,我按顺序看到了所有内容:1、2、3
当我将 skip
更改为 1 时,我得到 1,3
当它进行排序时,它是否在内部认识到文档 1 和 2 按相同值排序,并使用不同的方法来选择跳过时使用哪个?有什么办法可以解决这个问题吗?
最佳答案
您的查询是正确的,可能是版本问题造成的问题
db.col.aggregate([{ $sort: { x: 1, _id: 1 } }, { $skip: 1 } ])
db.col.find({ }).sort( { x: 1, _id: 1 } ).skip(1);
Skip 是第一个 n
文档跳过的使用编号。 Mongodb 没有像 mysql
关于mongodb - 当排序值相同时,Mongo 在 $skip 之后不会维持 $sort 顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57873715/