我的数据如下所示:
{ _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);
跳过是使用的第一个n
文档跳过的数量。Mongodb没有像mysql
那样的偏移量
由于x
字段的值相同,因此需要在$sort
阶段再使用一个字段,并且可能最好使用_id
。
{ $sort: { x: 1, _id: 1 } }