在mongodb中聚合嵌套数组

在mongodb中聚合嵌套数组,mongodb,mongodb-query,aggregation-framework,aggregate,aggregation,Mongodb,Mongodb Query,Aggregation Framework,Aggregate,Aggregation,我知道我可以使用$in来匹配数组中的元素,但是如果数组是嵌套的呢?像这样: { "_id": ObjectId("somethingsomething"), "supermarkets": [ { "groceries": [ { "groceryType": "

我知道我可以使用$in来匹配数组中的元素,但是如果数组是嵌套的呢?像这样:

{
    "_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"
  }
})

这很有效,谢谢@我很高兴这有帮助:)