首页 > 解决方案 > 在 mongodb 中查询深度嵌套的数组

问题描述

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

在此处输入图像描述

columns是一个未知大小的数组。列中的每个元素都包含一个record又是一个数组的元素。数组的每个元素都record包含一个名为 的数组fields。中的每个条目都field包含 2 个称为name和的键value

我正在查询name最里面的数组(在字段数组中)。我不能超过 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" : [
                            [

                            ]
                        ]
                    }
                ]
            }
}

如果存在这种起伏嵌套,有什么解决方案?

标签: arraysmongodbmultidimensional-arraynested

解决方案


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

将匹配至少有一个元素的所有文档,其中至少有一个元素,columns其中record至少一个fieldname“column_mapping_form”。

https://docs.mongodb.com/manual/tutorial/query-array-of-documents/有很好的解释、示例和交互式 shell。


推荐阅读