Jest to zachowanie filtrowania wielopoziomowego dokumentu osadzonego, zwykle pasujący filtr zwróci cały dokument, a nie podzbiory.
Zwykle positional operator $
używane do dopasowania dokumentów podrzędnych w updates
. Ale ta funkcja nie jest jeszcze zaimplementowana w specyfikatorach zwrotu.
W mongo istnieje już nierozstrzygnięty problem Obsługa operatora pozycyjnego ($) w polach do zwrócenia specyfikatora . (Zaloguj się, aby zagłosować, jeśli naprawdę potrzebujesz tej funkcji)
Więc musisz przeprojektować swój schemat, aby sobie z tym poradzić, może być tak
db.test.insert({"person" : [ { "id":1, "details" : { "name" : "Aswini", "Age" : 10 }}]})
db.test.insert({"person" : [ { "id":2, "details" : { "name" : "Mahesh", "Age" : 11}}]})
db.test.find({"person.id":1},{'person.details':1})