mongodbsyntaxnestedmongodb-querybson

How to query nested objects?


I have a problem when querying mongoDB with nested objects notation:

db.messages.find( { headers : { From: "reservations@marriott.com" } } ).count()
0
db.messages.find( { 'headers.From': "reservations@marriott.com" }  ).count()
5

I can't see what I am doing wrong. I am expecting nested object notation to return the same result as the dot notation query. Where am I wrong?


Solution

  • db.messages.find( { headers : { From: "reservations@marriott.com" } } )

    This queries for documents where headers equals { From: ... }, i.e. contains no other fields.


    db.messages.find( { 'headers.From': "reservations@marriott.com" } )

    This only looks at the headers.From field, not affected by other fields contained in, or missing from, headers.


    Dot-notation docs