不幸的是,MongoDB 不支持任何查询具有特定值的所有字段的方法。现有的 Jira 票证要求此增强功能:https://jira.mongodb.org/browse/SERVER-1248。随意评论、投票或关注该票。
与此同时,通常的处理方式是更改 MongoDB 架构。对于您的示例,您将更改现有架构:
{"123": "apple", "217": "pear", "179": "orange"}
{"831": "pear", "189": "grapes"}
你可以像这样构造它:
{ tags: [
{ cid: "123", value: "apple" },
{ cid: "217", value: "pear" },
{ cid: "179", value: "orange" },
]
}
{ tags: [
{ cid: "831", value: "pear" },
{ cid: "189", value: "grapes" },
]
}
完成此操作后,您可以执行以下查询以查找所有所需的文档:
db.docs.find( {'tags.value': "apple" } )
请注意,此架构允许您索引 'tags.cid' 和 'tags.value' 字段,而您的原始架构没有。
我希望这会有所帮助。
-威廉