query objects array mongodb

objects - Mongodb obtener parte específica del documento



mongodb query embedded array (5)

No, no puede devolver solo los valores de x / y; Incluso si limita los campos, la estructura externa sigue siendo devuelta.

Ver Proyecciones de resultados para más información.

Estoy probando mongo db y quiero preguntar si es posible obtener solo una parte específica del documento.

Ejemplo

{ "name" : "MongoDB", "info" : { x : 203, y : 102 } }

Y solo quiero el contenido de la info .

Lo más cercano que encontré es db.cellection.find({},{info:1 }) pero esto me devuelve info: content y quiero devolver solo el contenido.

¿Es posible? ¿Cómo?


Podrías hacerlo

db.collection.find({},{''info.x'':1, ''info.y'':1})

pero eso significa enumerar todos y cada uno de los elementos del objeto de información en la proyección, lo que puede o no ser lo que está buscando.


Puede usar la función distinct() que se parece a lo siguiente:

db.collection.distinct("info", {info : {$exists : true}})


Puede utilizar el marco de agregación :

  1. Fase de $ match (opcional) para filtrar el resultado.
  2. $ fase del proyecto para seleccionar campos

    db.getCollection(''yourCollection'').aggregate([ {$match:{_id:ObjectId("566fc97f5b79dff1a73ca2ae")}}, {$project:{_id:0, "x":"$info.x", "y":"$info.y"}} ])


Documentos de MongoDb

Lee esto

en este caso, si no especifica ninguna proyección, el método find () devuelve todos los campos de todos los documentos que coinciden con la consulta.