Malheureusement, MongoDB ne prend en charge aucune méthode d'interrogation de tous les champs avec une valeur particulière. Il existe un ticket Jira demandant cette amélioration :https://jira.mongodb.org/browse/SERVER-1248 . N'hésitez pas à commenter, voter ou suivre ce ticket.
En attendant, la manière habituelle de gérer cela consiste à modifier le schéma MongoDB. Pour votre exemple, vous modifieriez votre schéma existant :
{"123": "apple", "217": "pear", "179": "orange"}
{"831": "pear", "189": "grapes"}
Et vous pourriez le structurer comme ceci :
{ tags: [
{ cid: "123", value: "apple" },
{ cid: "217", value: "pear" },
{ cid: "179", value: "orange" },
]
}
{ tags: [
{ cid: "831", value: "pear" },
{ cid: "189", value: "grapes" },
]
}
Une fois que vous avez fait cela, vous pouvez effectuer la requête suivante pour trouver tous les documents souhaités :
db.docs.find( {'tags.value': "apple" } )
Notez que ce schéma vous permet d'indexer les champs 'tags.cid' et 'tags.value', ce que votre schéma d'origine ne permet pas.
J'espère que cela vous aidera.
-Guillaume