Desafortunadamente, MongoDB no admite ningún método para consultar todos los campos con un valor particular. Existe un ticket de Jira que solicita esta mejora:https://jira.mongodb.org/browse/SERVER-1248. Siéntete libre de comentar, votar o seguir ese ticket.
Mientras tanto, la forma habitual de manejar esto es cambiar el esquema de MongoDB. Para su ejemplo, cambiaría su esquema existente:
{"123": "apple", "217": "pear", "179": "orange"}
{"831": "pear", "189": "grapes"}
Y podrías estructurarlo de la siguiente manera:
{ tags: [
{ cid: "123", value: "apple" },
{ cid: "217", value: "pear" },
{ cid: "179", value: "orange" },
]
}
{ tags: [
{ cid: "831", value: "pear" },
{ cid: "189", value: "grapes" },
]
}
Una vez hecho esto, puede realizar la siguiente consulta para encontrar todos los documentos deseados:
db.docs.find( {'tags.value': "apple" } )
Tenga en cuenta que este esquema le permite indexar los campos 'tags.cid' y 'tags.value', lo que su esquema original no permite.
Espero que esto ayude.
-Guillermo