Dette er adfærden ved filtrering af indlejrede dokumenter på flere niveauer, normalt ville det matchende filter returnere hele dokumentet, ikke undersættene.
Normalt positional operator $
bruges til at matche underdokumenterne i updates
. Men funktionen er endnu ikke implementeret i returspecifikationer.
Der er allerede et udestående problem i mongo Støtte til positionel ($) operatør i felter for at returnere specificator . (Log venligst ind for at stemme, hvis du virkelig havde brug for funktionen)
Så du skal omdefinere dit skema for at håndtere dette, det kan være sådan her
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})