如何解决如何获取嵌套内部列表组的整个列表,并向它们添加排序和限制 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)
}
]
}
我想要做的是模糊地获取所有 'EvaluationsGroups' 的所有内部 Evaluations
的完整列表,按 EvaluatedAt
日期对其进行排序,并限制分页的结果。
我将如何在 mongo 中进行这样的查询?
解决方法
-
$project
显示必填字段 -
$unwind
解构Evaluations
数组 -
$replaceRoot
替换 root 中的对象 -
$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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。