Mongodb 排序和筛选双嵌套mongo数组
我有一个类似于以下内容的数据库条目:Mongodb 排序和筛选双嵌套mongo数组,mongodb,aggregation-framework,Mongodb,Aggregation Framework,我有一个类似于以下内容的数据库条目: name: "List 1" sections:[ order:0 name:"section 1" items : [Array visible:1 name: "Item 1" ], visible:0
name: "List 1"
sections:[
order:0
name:"section 1"
items : [Array
visible:1
name: "Item 1"
],
visible:0
name: "Item 2"
],
order:0
name:"section 2"
items : [Array
visible:1
name: "Item 1"
],
visible:1
name: "Item 2"
]
...
我想在mongo中设计一个查询,让我
部分对部分进行排序。排序
键可见=1
。到目前为止,我发现我可以使用像这样的展开来重新排列部分
,但我似乎不知道如何防止项
可见-1从结果中结束Record.aggregate([
{ $match: { name:name } },
{ $unwind: "$sections" },
{ $sort: { "sections.order": 1}, },
{
$group: {
sections: { $push: "$sections" },
},
},
{
$project: {
sections: "$sections",
},
},
])
上面的查询将正确地对各部分进行排序,但我仍然会在其中得到
可见的项目:0
。您知道如何筛选出这些项目吗?添加一个新阶段,以按可见项筛选项目
,$addFields
迭代$filter
项的循环,并按
可见进行筛选!=1
由$group
创建并构造节数组\u id
请添加有效的样本数据
Record.aggregate([
{ $match: { name: name } },
{ $unwind: "$sections" },
{
$addFields: {
"sections.items": {
$filter: {
input: "$sections.items",
cond: { $ne: ["$$this.visible", 1] }
}
}
}
},
{ $sort: { "sections.order": 1 } },
{
$group: {
_id: "$_id",
name: { $first: "$name" },
sections: { $push: "$sections" }
}
}
])