, распространяющий этот следующий вопрос: MongoDB filter multi sub-documents, который я хочу отфильтровать документ, чтобы показывать только активные поддокументы: активные автомобили и активные фрукты.mongoDB Aggregation retuns empty
Использование сборки агрегация трубопровода по chridam в следующем документе, где все fruits
отключены
{
"name":"Andre",
"fruits":[
{
"active":false,
"fruitname":"apple"
},{
"active":false,
"fruitname":"banana"
}
],
"cars":[
{
"active":false,
"carname":"ford"
},{
"active":true,
"carname":"GM"
},
]
}
агрегация трубопровода используется:
var pipeline = [
{
"$match": {
"name": "Andre",
"fruits.active": true,
"cars.active": true
}
},
{ "$unwind": "$fruits" },
{ "$unwind": "$cars" },
{
"$match": {
"fruits.active": true,
"cars.active": true
}
},
{
"$group": {
"_id": {
"_id": "$_id",
"name": "$name"
},
"cars": { "$addToSet" : "$cars" },
"fruits": { "$addToSet" : "$fruits" }
}
},
{
"$project": {
"_id": 0,
"name": "$_id.name",
"cars": 1,
"fruits": 1
}
}
]
m_object.aggregate(pipeline)
.exec(function (err, result) {
if (err) {
console.log(err);
return;
}
console.log('result');
});
вместо того, чтобы
[{
"name":"Andre",
"fruits":[],
"cars":[
{
"active":true,
"carname":"GM"
},
]
}]
агрегацию возвращается
[]