Este es el comportamiento del filtrado de documentos incrustados de varios niveles; normalmente, el filtro coincidente devolvería el documento completo, no los subconjuntos.
Por lo general, positional operator $
utilizado para hacer coincidir los subdocumentos en updates
. Pero la característica aún no está implementada en los especificadores de devolución.
Ya hay un problema pendiente en mongo Soporte para el operador posicional ($) en los campos para devolver el especificador . (Inicie sesión para votar si realmente necesita la función)
Así que tienes que rediseñar tu esquema para manejar esto, puede ser así
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})