mongo聚合到elemMatch在嵌套数组上

时间:2020-01-23 13:10:53

标签: mongodb mongodb-query aggregation-framework

我有一个类似的文档

{
    "name": "abc"
    "array1": [
        {
            "_id": "87a015b3-b81c-4c75-8dd6-4fa0bd6d9660",
            "array2": [
                [
                   {
                        "_id": "123",    
                        "values": [{
                                "value": "ABC"
                            }
                        ]
                    }, 
                    .....
                    .....
                ],

                [
                    {
                        "_id": "789",
                        "values": [{
                                "value": "XYZ"
                            }
                        ]
                    }, 
                    .....
                    .....
                ]
            ]
        }
    ]
}

如何使用$ elemMatch来基于_id和值进行过滤? 例如,如果在array1.array2中存在“ _id” =“ 123”且“ value” =“ ABC”的条目,则匹配。

1 个答案:

答案 0 :(得分:1)

您可以这样做:

db.collection.find(
{"array1.array2": {$elemMatch: {$elemMatch: {_id: "123", "values.value": "ABC"}}}}
)

我个人建议你们重新考虑您的文档结构,因为目前我觉得这对我来说没有多大意义。