Helaas ondersteunt MongoDB geen enkele methode om alle velden met een bepaalde waarde te doorzoeken. Er is een bestaand Jira-ticket dat om deze verbetering vraagt:https://jira.mongodb.org/browse/SERVER-1248 . Voel je vrij om commentaar te geven, te stemmen of dat ticket te volgen.
In de tussentijd is de gebruikelijke manier waarop dit wordt afgehandeld, het wijzigen van het MongoDB-schema. Voor uw voorbeeld zou u uw bestaande schema wijzigen:
{"123": "apple", "217": "pear", "179": "orange"}
{"831": "pear", "189": "grapes"}
En je zou het ongeveer als volgt kunnen structureren:
{ tags: [
{ cid: "123", value: "apple" },
{ cid: "217", value: "pear" },
{ cid: "179", value: "orange" },
]
}
{ tags: [
{ cid: "831", value: "pear" },
{ cid: "189", value: "grapes" },
]
}
Zodra u dit heeft gedaan, kunt u de volgende zoekopdracht uitvoeren om alle gewenste documenten te vinden:
db.docs.find( {'tags.value': "apple" } )
Merk op dat u met dit schema de velden 'tags.cid' en 'tags.value' kunt indexeren, wat uw oorspronkelijke schema niet doet.
Ik hoop dat dit helpt.
-Willem