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個字段? –