За съжаление, 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', което оригиналната ви схема не прави.
Надявам се това да помогне.
-Уилям