Desværre understøtter MongoDB ikke nogen metode til at forespørge på alle felter med en bestemt værdi. Der er en eksisterende Jira-billet, der anmoder om denne forbedring:https://jira.mongodb.org/browse/SERVER-1248. Du er velkommen til at kommentere, stemme eller følge den billet.
I mellemtiden er den sædvanlige måde, dette håndteres på, at ændre MongoDB-skemaet. For dit eksempel ville du ændre dit eksisterende skema:
{"123":"apple", "217":"pear", "179":"orange"} {"831":"pear", "189":"druer"}
Og du kan strukturere det sådan her:
{ tags:[ { cid:"123", værdi:"æble" }, { cid:"217", værdi:"pære" }, { cid:"179", værdi:"orange" }, ] } { tags:[ { cid:"831", værdi:"pære" }, { cid:"189", værdi:"druer" }, ] }
Når du har gjort dette, kan du udføre følgende forespørgsel for at finde alle de ønskede dokumenter:
db.docs.find( {'tags.value':"apple" } )
Bemærk, at dette skema giver dig mulighed for at indeksere felterne 'tags.cid' og 'tags.value', hvilket dit oprindelige skema ikke gør.
Jeg håber, at dette hjælper.
-William