残念ながら、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」フィールドのインデックスを作成できることに注意してください。
これが役立つことを願っています。
-ウィリアム