如何查询下图所示的深层嵌套文档。
此处columns
是一个未知大小的数组。列中的每个元素都包含一个record
,它又是一个数组。 record
数组的每个元素都包含一个名为fields
的数组。 field
中的每个条目都包含2个称为name
和value
的键。
我正在查询最里面的数组的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" : [
[
]
]
}
]
}
}
如果存在这样的沉浮嵌套,该怎么办?
答案 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/有很好的解释,示例和可玩的交互式外壳。