arrays - 在 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" : [
[
]
]
}
]
}
}
如果存在这种起伏嵌套,有什么解决方案?
解决方案
db.collection.find("data.columns.record.fields.name" : "column_mapping_form")
将匹配至少有一个元素的所有文档,其中至少有一个元素,columns
其中record
至少一个field
是name
“column_mapping_form”。
https://docs.mongodb.com/manual/tutorial/query-array-of-documents/有很好的解释、示例和交互式 shell。
推荐阅读
- python - Jupyter notebook 命令在命令行中被识别但不运行并冻结
- sql-server - 使用 TOP 和 UNION 时的意外结果
- python-3.x - 使用 os.walk 的循环只运行第一个循环
- flutter - StreamBuilder 仅在我使用按钮更改状态时重新呈现数据
- javascript - 如何在反应中重置选择下拉值
- java - Class 类型中的方法 foo(T[]) 不适用于参数(Vector
) - angularjs - select2使用angularJs默认多选与动态标签错误
- histogram - 在 Grafana 图形直方图中显示百分比
- jquery - 当网站缩小/处于移动模式时,如何在引导程序 4 中放置 2 个 div 的内容?
- html - 试图让 {% include header.html %} 提示起作用