Detta är beteendet för att filtrera inbäddade dokument på flera nivåer, normalt skulle det matchande filtret returnera hela dokumentet, inte delmängderna.
Vanligtvis positional operator $
används för att matcha underdokumenten i updates
. Men funktionen är ännu inte implementerad i returspecifikationer.
Det finns ett kvarstående problem redan i mongo Stöd för positionsoperatör ($) i fält för att returnera specificator . (Logga in för att rösta om du verkligen behövde funktionen)
Så du måste göra om ditt schema för att hantera detta, kan vara så här
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})