1
过滤数组元素的领域考虑下面的模式:
{
"_id" : ObjectId("56b9bfb962debd68f8b61340"),
"Name" : "Parent",
"Children" : [
{
"Name" : "A",
"Age" : NumberInt(0)
},
{
"Name" : "B",
"Age" : NumberInt(1)
},
{
"Name" : "C",
"Age" : NumberInt(2)
}
]
}
我使用2 $项目阶段。 1过滤“孩子”,另一个选择除“Children.Age”字段:
db.collection.aggregate(
[
{
$project: {
Name: 1,
Children: { $filter: {
input: "$Children",
as: "child",
cond: { $gt: ["$$child.Age", 0] }
} }
}
},
{
$project: {
Name: 1,
Children: { Name: 1 }
}
}
]
);
我能做到只用1 $项目的阶段呢?
我想避免使用$ unwind和$组,如果可能的话。
在第一解决方案:如果我whant排除1个领域,包括至少2个字段? –