查询mongodb中深层嵌套的数组

时间:2018-09-26 10:24:57

标签: arrays mongodb multidimensional-array nested

如何查询下图所示的深层嵌套文档。

enter image description here

此处columns是一个未知大小的数组。列中的每个元素都包含一个record,它又是一个数组。 record数组的每个元素都包含一个名为fields的数组。 field中的每个条目都包含2个称为namevalue的键。

我正在查询最里面的数组的name(在fields数组中)。我不能超过1级嵌套顺序。

上图的JSON文档

"data" : {
        "columns" : [
            {
                "name" : "styleId", 
                "record" : [
                    {
                        "fname" : "column_mapping", 
                        "_id" : ObjectId("5ba488c79dc6d62c90257752"), 
                        "fields" : [
                            {
                                "name" : "column_mapping_form", 
                                "value" : "styleId"
                            }
                        ], 
                        "rules" : [
                            [

                            ]
                        ]
                    }
                ]
            }, 
            {
                "name" : "vendorArticleNumber", 
                "record" : [
                    {
                        "fname" : "column_mapping", 
                        "_id" : ObjectId("5ba488c79dc6d62c90257753"), 
                        "fields" : [
                            {
                                "name" : "column_mapping_form", 
                                "value" : "vendorArticleNumber"
                            }
                        ], 
                        "rules" : [
                            [

                            ]
                        ]
                    }
                ]
            }, 
            {
                "name" : "vendorArticleName", 
                "record" : [
                    {
                        "fname" : "column_mapping", 
                        "_id" : ObjectId("5ba488c79dc6d62c90257754"), 
                        "fields" : [
                            {
                                "name" : "column_mapping_form", 
                                "value" : "vendorArticleName"
                            }
                        ], 
                        "rules" : [
                            [

                            ]
                        ]
                    }
                ]
            }
}

如果存在这样的沉浮嵌套,该怎么办?

1 个答案:

答案 0 :(得分:1)

db.collection.find("data.columns.record.fields.name" : "column_mapping_form")

将匹配所有columns元素中至少有一个record和至少一个field其中name是“ column_mapping_form”的文档。 / p>

https://docs.mongodb.com/manual/tutorial/query-array-of-documents/有很好的解释,示例和可玩的交互式外壳。