Niestety MongoDB nie obsługuje żadnej metody odpytywania wszystkich pól o określonej wartości. Istnieje już zgłoszenie Jira żądające tego ulepszenia:https://jira.mongodb.org/browse/SERVER-1248 . Zapraszam do komentowania, głosowania lub śledzenia tego zgłoszenia.
W międzyczasie zwykłym sposobem obsługi tego jest zmiana schematu MongoDB. Na przykład możesz zmienić istniejący schemat:
{"123": "apple", "217": "pear", "179": "orange"}
{"831": "pear", "189": "grapes"}
Możesz to ustrukturyzować mniej więcej tak:
{ tags: [
{ cid: "123", value: "apple" },
{ cid: "217", value: "pear" },
{ cid: "179", value: "orange" },
]
}
{ tags: [
{ cid: "831", value: "pear" },
{ cid: "189", value: "grapes" },
]
}
Gdy to zrobisz, możesz wykonać następujące zapytanie, aby znaleźć wszystkie żądane dokumenty:
db.docs.find( {'tags.value': "apple" } )
Pamiętaj, że ten schemat umożliwia indeksowanie pól „tags.cid” i „tags.value”, czego nie ma w oryginalnym schemacie.
Mam nadzieję, że to pomoże.
-William