【发布时间】:2015-04-17 03:39:51
【问题描述】:
我在 MongoDB 的一个集合中有这样的文档(让我们调用 x):
{
"_id" : ...,
"attrs" : {
"A2" : {
"type" : "typeA",
"value" : "12.2"
},
"A3" : {
"type" : "typeB",
"value" : "34"
}
}
}
换句话说,它们是具有attr 字段的文档,该字段的值是嵌入文档,其中包含任意数量的键(在示例中显示了 A2 和 A3 键)。
给定一个潜在键的列表(例如 A1、A2、A3),我想要一个查询来获取在给定列表中具有至少一个键的所有文档。我的第一个想法是使用:
db.x.find({"attrs": {$in:[ "A1", "A2", "A3" ]})
但它不起作用。
我找到了一个通过以下方式解决问题的查询:
db.x.find({$or: [ {"attrs.A1": {$exists: true }},
{"attrs.A2": {$exists: true }},
{"attrs.A3": {$exists: true }} ] })
不过,我想知道是否有更好、更“紧凑”的解决方案,比如第一个 find() 示例不起作用。
【问题讨论】:
标签: mongodb mongodb-query