在mongodb中聚合嵌套数组
我知道我可以使用$in来匹配数组中的元素,但是如果数组是嵌套的呢?像这样:在mongodb中聚合嵌套数组,mongodb,mongodb-query,aggregation-framework,aggregate,aggregation,Mongodb,Mongodb Query,Aggregation Framework,Aggregate,Aggregation,我知道我可以使用$in来匹配数组中的元素,但是如果数组是嵌套的呢?像这样: { "_id": ObjectId("somethingsomething"), "supermarkets": [ { "groceries": [ { "groceryType": "
{
"_id": ObjectId("somethingsomething"),
"supermarkets": [
{
"groceries": [
{
"groceryType": "banana",
"groceryStockDate": "12345678",
"groceryAmount": 12
},
{
"groceryType": "cabbage",
"groceryStockDate": "313512",
"groceryAmount": 53
},
{
"groceryType": "strawberry",
"groceryStockDate": "51362",
"groceryAmount": 52
}
]
},
{
"groceries": [
{
"groceryType": "banana",
"groceryStockDate": "31321",
"groceryAmount": 52
},
{
"groceryType": "banana",
"groceryStockDate": "532451",
"groceryAmount": 73
},
{
"groceryType": "cucumber",
"groceryStockDate": "123",
"groceryAmount": 12
}
]
}
]
}
在这里,我想用groceryType:banana
获取每个对象,因此最终结果应该是
[
{
"groceryType": "banana",
"groceryStockDate": "12345678",
"groceryAmount": 12
},
{
"groceryType": "banana",
"groceryStockDate": "31321",
"groceryAmount": 52
},
{
"groceryType": "banana",
"groceryStockDate": "532451",
"groceryAmount": 73
}
]
我特别想用aggregate来实现这一点,因为我需要在以后通过更多的阶段。演示-
在超市
和超市.杂货店
上使用可获取个人文档,并用于过滤数据和获得正确形状
db.collection.aggregate({
$unwind: "$supermarkets"
},
{
$unwind: "$supermarkets.groceries"
},
{
$match: {
"supermarkets.groceries.groceryType": "banana"
}
},
{
$project: {
_id: 0,
groceries: "$supermarkets.groceries"
}
})
这很有效,谢谢@我很高兴这有帮助:)