mma*_*oti 2 advanced-queuing mongodb
我想查询具有包含特定值的字段的所有对象.例如,我有两个文件:
{"123": "apple", "217": "pear", "179": "orange"}
{"831": "pear", "189": "grapes"}
Run Code Online (Sandbox Code Playgroud)
并且想要获得具有值为"apple"的字段的所有对象,但我不知道该字段的名称.是否可以在MongoDB中指定查询来实现此目的?(对象中的数字键是子ID,对象中的值是长GUID)
不幸的是,MongoDB不支持任何查询具有特定值的所有字段的方法.现有的Jira票证要求此增强功能:https://jira.mongodb.org/browse/SERVER-1248.随意评论,投票或关注该票.
与此同时,处理此问题的常用方法是更改MongoDB架构.对于您的示例,您将更改现有架构:
{"123": "apple", "217": "pear", "179": "orange"}
{"831": "pear", "189": "grapes"}
Run Code Online (Sandbox Code Playgroud)
你可能会这样构造它:
{ tags: [
{ cid: "123", value: "apple" },
{ cid: "217", value: "pear" },
{ cid: "179", value: "orange" },
]
}
{ tags: [
{ cid: "831", value: "pear" },
{ cid: "189", value: "grapes" },
]
}
Run Code Online (Sandbox Code Playgroud)
完成此操作后,您可以执行以下查询以查找所有需要的文档:
db.docs.find( {'tags.value': "apple" } )
Run Code Online (Sandbox Code Playgroud)
请注意,此架构允许您索引"tags.cid"和"tags.value"字段,而原始架构则不会.
我希望这有帮助.
-威廉
归档时间: |
|
查看次数: |
3813 次 |
最近记录: |