К сожалению, 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" },
]
}
После того, как вы сделали это, вы можете выполнить follwing запрос, чтобы найти все искомых документов:
db.docs.find({'tags.value': "apple" })
Обратите внимание, что эта схема позволяет индексировать «tags.cid» и поля «tags.value», который исходная схема не делает.
Надеюсь, это поможет.
-William