unir texto por metodo fecha ejemplo consultar como colecciones busqueda buscar anidada agregaciones mongodb syntax nested mongodb-query bson

mongodb - texto - ¿Cómo consultar objetos anidados?



metodo aggregate mongodb (2)

Tengo un problema al consultar mongoDB con notación de objetos anidados:

db.messages.find( { headers : { From: "[email protected]" } } ).count() 0 db.messages.find( { ''headers.From'': "[email protected]" } ).count() 5

No puedo ver lo que estoy haciendo mal. Estoy esperando que la notación de objeto anidado devuelva el mismo resultado que la consulta de notación de punto. ¿Dónde estoy equivocado?


Los dos mecanismos de consulta funcionan de diferentes maneras, como se sugiere en los documentos en la sección Subdocumentos :

Cuando el campo contiene un documento incrustado (es decir, subdocumento ), puede especificar todo el subdocumento como el valor de un campo, o "alcanzar" el subdocumento utilizando la notación de puntos, para especificar valores para campos individuales en el subdocumento :

Igualdad coincide dentro de los subdocumentos, seleccione documentos si el subdocumento coincide exactamente con el subdocumento especificado, incluido el orden de los campos.

En el siguiente ejemplo, la consulta coincide con todos los documentos donde el valor del productor de campo es un subdocumento que contiene solo la company campo con el valor ''ABC123'' y la address campo con el valor ''123 Street'' , en el orden exacto:

db.inventory.find( { producer: { company: ''ABC123'', address: ''123 Street'' } });


db.messages.find( { headers : { From: "[email protected]" } } )

Esto consulta los documentos donde los headers iguales a { From: ... } , es decir, no contiene otros campos.

db.messages.find( { ''headers.From'': "[email protected]" } )

Esto solo mira los headers . Desde el campo, no se ve afectado por otros campos contenidos en, o faltantes de, headers .

Documentos de notación de punto