Bird
Raised Fist0
MongoDBquery~10 mins

Arrays in documents in MongoDB - Step-by-Step Execution

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Concept Flow - Arrays in documents
Start with a document
Add an array field
Insert multiple values inside array
Query documents by array content
Update array elements
Use array operators for manipulation
Retrieve documents with arrays
End
This flow shows how a document can have an array field, how to add values, query, update, and retrieve arrays in MongoDB.
Execution Sample
MongoDB
db.products.insertOne({
  name: "Notebook",
  tags: ["stationery", "paper", "office"]
})
Insert a document with an array field 'tags' containing multiple string values.
Execution Table
StepActionDocument StateArray Field 'tags'Result
1Insert document with array{ name: "Notebook", tags: ["stationery", "paper", "office"] }["stationery", "paper", "office"]Document inserted
2Query documents where tags include 'paper'Same as step 1["stationery", "paper", "office"]Returns document with name 'Notebook'
3Update: add 'school' to tags array{ name: "Notebook", tags: ["stationery", "paper", "office", "school"] }["stationery", "paper", "office", "school"]Document updated
4Query documents where tags include 'school'Same as step 3["stationery", "paper", "office", "school"]Returns document with name 'Notebook'
5Remove 'office' from tags array{ name: "Notebook", tags: ["stationery", "paper", "school"] }["stationery", "paper", "school"]Document updated
6Query all documentsSame as step 5["stationery", "paper", "school"]Returns document with updated tags array
7ExitNo further changesNo changeEnd of operations
💡 All array operations completed and document state stable
Variable Tracker
VariableStartAfter Step 1After Step 3After Step 5Final
Document{}{ name: "Notebook", tags: ["stationery", "paper", "office"] }{ name: "Notebook", tags: ["stationery", "paper", "office", "school"] }{ name: "Notebook", tags: ["stationery", "paper", "school"] }{ name: "Notebook", tags: ["stationery", "paper", "school"] }
tags arrayundefined["stationery", "paper", "office"]["stationery", "paper", "office", "school"]["stationery", "paper", "school"]["stationery", "paper", "school"]
Key Moments - 3 Insights
Why does querying with a value inside the array return the whole document?
Because MongoDB matches documents where the array contains the value, and returns the entire document, not just the array element (see execution_table step 2).
How does MongoDB add a new element to an existing array without replacing it?
Using update operators like $push, MongoDB appends the new element to the array, preserving existing elements (see execution_table step 3).
What happens if you remove an element from the array?
MongoDB updates the array by removing the specified element, and the document reflects this change (see execution_table step 5).
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the 'tags' array after step 3?
A["stationery", "paper"]
B["stationery", "paper", "office"]
C["stationery", "paper", "office", "school"]
D["school"]
💡 Hint
Check the 'Array Field tags' column in execution_table row for step 3
At which step is the element 'office' removed from the tags array?
AStep 5
BStep 2
CStep 3
DStep 6
💡 Hint
Look for the step where the tags array no longer contains 'office' in execution_table
If we query for documents with tag 'school' after step 1, what will happen?
AReturns the document
BReturns no documents
CReturns an error
DReturns only the tags array
💡 Hint
Check execution_table step 2 and step 4 to see when 'school' appears in tags
Concept Snapshot
Arrays in MongoDB documents store multiple values in one field.
Use square brackets [] to define arrays.
Query arrays by matching values inside them.
Update arrays with operators like $push and $pull.
The whole document is returned when querying by array content.
Full Transcript
This visual execution trace shows how arrays work inside MongoDB documents. We start by inserting a document with an array field called 'tags' containing three strings. Then we query documents that have a specific value inside the tags array, which returns the whole document. Next, we update the array by adding a new value 'school' using an update operation. We query again to confirm the new value is present. Then we remove an element 'office' from the array and query all documents to see the updated array. Finally, the operations end with the document reflecting all changes. This step-by-step trace helps beginners see how arrays are stored, queried, and updated inside MongoDB documents.

Practice

(1/5)
1. What is the main purpose of using arrays in MongoDB documents?
easy
A. To index documents automatically
B. To create multiple documents at once
C. To enforce data types on fields
D. To store multiple values in a single field

Solution

  1. Step 1: Understand what arrays do in MongoDB

    Arrays allow storing multiple values inside one document field, like a list.
  2. Step 2: Compare options with array purpose

    Only To store multiple values in a single field correctly describes storing multiple values in one field.
  3. Final Answer:

    To store multiple values in a single field -> Option D
  4. Quick Check:

    Arrays = multiple values in one field [OK]
Hint: Arrays hold many values in one field [OK]
Common Mistakes:
  • Thinking arrays create multiple documents
  • Confusing arrays with indexing
  • Believing arrays enforce data types
2. Which of the following is the correct way to define an array field named tags in a MongoDB document?
easy
A. { tags: "mongodb, database" }
B. { tags: { "mongodb", "database" } }
C. { tags: ["mongodb", "database"] }
D. { tags: ("mongodb", "database") }

Solution

  1. Step 1: Recall MongoDB array syntax

    Arrays in MongoDB are defined using square brackets [] with comma-separated values.
  2. Step 2: Check each option's syntax

    { tags: ["mongodb", "database"] } uses square brackets correctly. Options A, B, and D use incorrect syntax for arrays.
  3. Final Answer:

    { tags: ["mongodb", "database"] } -> Option C
  4. Quick Check:

    Arrays use [] brackets [OK]
Hint: Arrays use square brackets [] in MongoDB [OK]
Common Mistakes:
  • Using quotes instead of brackets for arrays
  • Using curly braces {} which define objects
  • Using parentheses () which are invalid for arrays
3. Given the document { name: "Alice", scores: [85, 90, 78] }, what will the query db.collection.find({ scores: 90 }) return?
medium
A. Documents where the scores array contains 90
B. Documents where scores equals exactly 90
C. Documents where scores is greater than 90
D. No documents because 90 is inside an array

Solution

  1. Step 1: Understand MongoDB array matching

    Querying with { scores: 90 } matches documents where the array contains the value 90.
  2. Step 2: Analyze the given document and query

    The scores array includes 90, so the document matches and will be returned.
  3. Final Answer:

    Documents where the scores array contains 90 -> Option A
  4. Quick Check:

    Query matches array elements directly [OK]
Hint: Query value matches any array element [OK]
Common Mistakes:
  • Thinking query matches whole array only
  • Assuming query checks for greater than
  • Believing arrays block direct value matching
4. What is wrong with this MongoDB update query to add a new tag to the tags array?
db.collection.updateOne({ _id: 1 }, { $push: { tags: "new" } })
medium
A. The query is missing the filter document
B. The $push operator is used correctly; no error
C. The $push operator requires the value to be an array
D. The update document should use $addToSet instead of $push

Solution

  1. Step 1: Understand $push operator usage

    $push adds a single value to an array field; it accepts a single value, not necessarily an array.
  2. Step 2: Check the query structure

    The filter {_id: 1} is present, and $push is used correctly to add "new" to tags array.
  3. Final Answer:

    The $push operator is used correctly; no error -> Option B
  4. Quick Check:

    $push adds single values to arrays [OK]
Hint: $push accepts single values, no array needed [OK]
Common Mistakes:
  • Thinking $push needs an array value
  • Confusing $push with $addToSet for uniqueness
  • Missing the filter document in update
5. You have documents with a field comments which is an array of objects like { user: "Bob", text: "Nice!" }. How do you write a query to find documents where comments contains an object with user equal to "Bob" and text containing the word "Nice"?
hard
A. { comments: { $elemMatch: { user: "Bob", text: /Nice/ } } }
B. { "comments.user": "Bob", "comments.text": /Nice/ }
C. { comments: { $all: [ { user: "Bob" }, { text: /Nice/ } ] } }
D. { comments: { $in: [ { user: "Bob", text: /Nice/ } ] } }

Solution

  1. Step 1: Understand matching objects inside arrays

    $elemMatch matches array elements that satisfy all conditions inside it.
  2. Step 2: Analyze each option for correct syntax

    { comments: { $elemMatch: { user: "Bob", text: /Nice/ } } } uses $elemMatch with both conditions together, correctly matching one object with user "Bob" and text matching /Nice/.
  3. Final Answer:

    { comments: { $elemMatch: { user: "Bob", text: /Nice/ } } } -> Option A
  4. Quick Check:

    $elemMatch matches array elements with multiple conditions [OK]
Hint: Use $elemMatch for multiple conditions on one array element [OK]
Common Mistakes:
  • Using separate field queries (dot notation) which match conditions across different elements
  • Using $all which matches separate elements, not one
  • Using $in which matches exact elements, not partial fields