我的数据如下:
{ _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是按相同的值排序的,并且使用不同的方法来选择跳过时要使用的文档?有什么办法解决吗?
2 个答案:
答案 0 :(得分:0)
您的查询正确可能是版本问题创建问题
db.col.aggregate([{ $sort: { x: 1, _id: 1 } }, { $skip: 1 } ])
您可以使用sort和skip
db.col.find({ }).sort( { x: 1, _id: 1 } ).skip(1);
跳过是第一个n
文档跳过的次数。 Mongodb没有像mysql
这样的偏移量
答案 1 :(得分:0)
由于x
字段的值相同,因此您需要在$sort
阶段再使用一个字段,而_id
可能是最好的用法。
{ $sort: { x: 1, _id: 1 } }