首页 > 解决方案 > 如何获取嵌套内部列表组的整个列表,并为它们添加排序和限制。MongoDB查询

问题描述

我在 MongoDB 集合中有一个名为 EvaluationsGroup 的对象的以下模型:

{
    "_id" : "5fecfb83d61ae459df1bceda",
    "Status" : "noDataFound",
    "Evaluations" : [ 
        {
            "EvaluatedAt" : ISODate("2020-12-30T22:13:21.168Z"),
            "ReferenceValue" : 2.0
        }
        {
            "EvaluatedAt" : ISODate("2020-12-30T22:13:15.168Z"),
            "ReferenceValue" : 3.0,
             (... several other properties)
        }
    ]
}

我想要做的是Evaluations模糊地获取所有'EvaluationsGroups'的所有内部的整个列表,按EvaluatedAt日期对它们进行排序,并限制分页的结果。

我将如何在 mongo 中进行这样的查询?

标签: arraysmongodbsortingmongodb-querylimit

解决方案


  • $project显示必填字段
  • $unwind解构Evaluations数组
  • $replaceRoot替换根中的对象
  • $sortEvaluatedAt日期降序排列
  • $skip分页文件数
  • $limit文件数
let page = 0;
let limit = 10;
let skip = page*limit;
db.collection.aggregate([
  {
    $project: {
      _id: 0,
      Evaluations: 1
    }
  },
  { $unwind: "$Evaluations" },
  { $replaceRoot: { newRoot: "$Evaluations" } },
  { $sort: { EvaluatedAt: -1 } },
  { $skip: skip },
  { $limit: limit }
])

操场


推荐阅读