mongodb - 在对象数组中查询对象数组
问题描述
我在下面有这个文档模型。我想通过具有名称和值的属性进行查询(我知道属性的名称和值,例如。{"name": "Renk", "value": "Kirmizi"}
)。我需要的只是文件。我不需要变体或属性的索引,只需要文档本身。我的目的不是获取属性或变体。我正在查询所有文档。我希望你没有误解我的意思
{
"_id" : ObjectId("5febdbf5d71b7ca4eef06cc5"),
"variants" : [
{
"id" : "xtb2E3PVNitmh5xhuRAFNd",
"attributes" : [
{
"name" : "Renk",
"value" : "Kirmizi"
},
{
"name" : "Beden",
"value" : "36"
},
{
"name" : "Yaka Tipi",
"value" : "V Yaka"
}
]
},
{
"id" : "aP6CDPsgVLxTLgY5D6bTm9",
"attributes" : [
{
"name" : "Renk",
"value" : "Kirmizi"
},
{
"name" : "Beden",
"value" : "38"
},
{
"name" : "Yaka Tipi",
"value" : "V Yaka"
}
]
},
{
"id" : "b3mLCJXe6ae8HhNAY8dCPW",
"attributes" : [
{
"name" : "Renk",
"value" : "Mavi"
},
{
"name" : "Beden",
"value" : "38"
},
{
"name" : "Yaka Tipi",
"value" : "V Yaka"
}
]
},
{
"id" : "hYrANxJTbXmEYDUjtFpEKT",
"attributes" : [
{
"name" : "Renk",
"value" : "Mavi"
},
{
"name" : "Beden",
"value" : "36"
},
{
"name" : "Yaka Tipi",
"value" : "V Yaka"
}
]
}
],
"updatedDate" : NumberLong(1609292789)
}
有任何想法吗?谢谢!
解决方案
这应该有效。这将搜索确切的键和值对:
{'variants.attributes': { 'name' : 'Renk', 'value' : 'Kirmizi' }}
注意:这样做时要小心 { "variants.attributes.name": "Renk", "variants.attributes.value": "Kirmizi" }。该对象被展平,因此此查询意味着查找任何包含键“Renk”和值“Kirmizi”的文档,但“Renk”和“Kirmizi”可以在不同的对象中!
阅读 Mongo 的官方文档以获取更多详细信息https://docs.mongodb.com/manual/tutorial/query-array-of-documents/
推荐阅读
- reactjs - 在包中使用 Material UI 时,只能在函数组件的主体内部调用 Hooks
- c++ - 是否在没有对象未定义行为的情况下访问静态 struct::var?
- java - Java中“if”和“if else”的不同表现
- python - 使用带有 PyQt5 和 OpenGL 的 VBO 绘制多个对象?
- sql - 获取每个组的前 5 条记录并将它们连接到每组的一行中
- python - 在 Python 中将 txt 数据拆分为列
- python - 我正在尝试获取代理和端口我获取代理但我无法获取端口请帮助我
- java - line... int ct = count.containsKey(ch) 的含义和用途是什么?计数.get(ch):0;在代码中?
- reactjs - 尝试导入错误:“容器”未从“react-bootstrap”导出
- rfc3339 - RFC3339 字符串中的有效日期时间分隔符是什么?