Querying Nested Docs
One of MongoDB's greatest strengths is its ability to handle complex, nested data. To query these fields, we use Dot Notation.
1. Querying Nested Documents
Access sub-fields by joining the field names with a dot.
// Find users lives in "NYC"
db.users.find({ "address.city": "NYC" })
// Note: Field names MUST be in quotes when using dot notation
// CORRECT: "address.city": "..."
// INCORRECT: address.city: "..."
2. Querying Arrays of Documents
When an array contains documents, you can query specific fields within those documents.
// Find blogs where at least one comment is by "Alice"
db.blogs.find({ "comments.author": "Alice" })
// Exact Match (Matches the whole document in the array)
db.blogs.find({
comments: { author: "Alice", text: "Nice post!" }
})
3. The $ Positional Operator
The `$` operator identifies an element in an array to update without specifying the element's position in the array.
// Update the score of the product "xyz" in the results array
db.survey.updateOne(
{ "results.product": "xyz" },
{ $set: { "results.$.score": 10 } }
)
Key Rule: Dot notation allows you to reach any depth in your document structure, making MongoDB highly flexible for real-world hierarchical data.