mongodb - 当排序值相同时,Mongo 在 $skip 之后不会维持 $sort 顺序

标签 mongodb sorting aggregation-framework

我的数据如下所示:

{ _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 } ])

您可以使用sortskip

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/

相关文章:

MongoDB 从数组中获取不同元素以及每个元素出现的次数

php - MongoDB 最佳性能——有多少个持久连接

arrays - 在 Powershell 中从数组中提取数据

python - 按值属性对字典进行排序

mongodb - 尝试使用 scala 从 Spark 向 mongodb 写入 $group 聚合时出现重复键错误

mongodb - $geowithin 与 $lookup 上的外国收藏

node.js - MongoDB/Mongoose 聚合或 $or 未按预期工作?

ruby-on-rails - Elasticsearch与Tire on Rails批量导入和索引编制问题

node.js - 在 Mongodb 中插入不带 ObjectId 的文档

python - 将自定义比较与 python 3 中的键选择相结合