如何获取嵌套内部列表组的完整列表,并为它们添加排序和限制。 MongoDB 查询
How to get entire list of nested inner list groups, and add sort & limit to them. MongoDB query
我在 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)
}
]
}
我想做的是无差别地获取所有'EvaluationsGroups'的所有内部Evaluations
的完整列表,按EvaluatedAt
日期排序,并限制分页的结果。
如何在 mongo 中进行这样的查询?
$project
显示必填字段
$unwind
解构Evaluations
数组
$replaceRoot
替换根目录中的对象
$sort
按 EvaluatedAt
日期降序排列
$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 }
])
您可以在mongodb
中使用$unwind属性
db.getCollection('test').aggregate( [
{ $unwind : "$Evaluations" },
{ $sort: { "Evaluations.EvaluatedAt": 1 } },
{ $limit: 10 }
] )
以上代码有 3 级流水线
• 第 1 阶段:将数组展开为单个对象 - $unwind
• 阶段 2:根据 Evaluations.EvaluatedAt
属性 - $sort
对数组进行排序
• 第 3 阶段:设置限制范围 - $limit
我在 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)
}
]
}
我想做的是无差别地获取所有'EvaluationsGroups'的所有内部Evaluations
的完整列表,按EvaluatedAt
日期排序,并限制分页的结果。
如何在 mongo 中进行这样的查询?
$project
显示必填字段$unwind
解构Evaluations
数组$replaceRoot
替换根目录中的对象$sort
按EvaluatedAt
日期降序排列$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 }
])
您可以在mongodb
中使用$unwind属性db.getCollection('test').aggregate( [ { $unwind : "$Evaluations" }, { $sort: { "Evaluations.EvaluatedAt": 1 } }, { $limit: 10 } ] )
以上代码有 3 级流水线
• 第 1 阶段:将数组展开为单个对象 - $unwind
• 阶段 2:根据 Evaluations.EvaluatedAt
属性 - $sort
• 第 3 阶段:设置限制范围 - $limit