Dies ist das Verhalten beim Filtern von eingebetteten Dokumenten mit mehreren Ebenen. Normalerweise würde der übereinstimmende Filter das gesamte Dokument zurückgeben, nicht die Teilmengen.
Normalerweise positional operator $
Wird verwendet, um die Unterdokumente in updates
abzugleichen . Aber die Funktion ist noch nicht in Rückgabebezeichnern implementiert.
Es gibt bereits ein ausstehendes Problem in Mongo Support for positional ($) operator in fields to return specifier . (Bitte melden Sie sich an, um abzustimmen, wenn Sie die Funktion wirklich benötigen)
Sie müssen also Ihr Schema umgestalten, um damit umzugehen, vielleicht so
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})