Open In App

How to Remove Array Elements by Index in MongoDB

Last Updated : 26 Apr, 2024
Improve
Improve
Like Article
Like
Save
Share
Report

In MongoDB, arrays are a flexible data structure that allows storing multiple values within a single document field. Occasionally, we may need to remove specific elements from an array based on their index.

In this article, we’ll explore how to remove array elements by index in MongoDB by providing detailed explanations, examples, and outputs to help beginners understand and implement this operation effectively.

Understanding Array Indexing in MongoDB

  • In MongoDB, arrays are indexed starting from 0, similar to arrays in many programming languages.
  • Each element in the array has a corresponding index, which represents its position within the array.
  • Removing array elements by index involves specifying the index of the element we want to remove from the array.

Examples of How to Remove Array Elements by Index in MongoDB

To remove array elements by index in MongoDB, we can use the $unset operator in combination with the positional operator $. The positional operator $ identifies the matched element in the array based on its index, allowing us to remove it from the array.

To understand How to Remove Array Elements by Index in MongoDB we need a collection and some documents on which we will perform various operations and queries. Here we will consider a collection called users which contains the information shown below:

{ "_id": 1, "name": "Alice", "skills": ["JavaScript", "Python", "MongoDB", "Node.js"] }
{ "_id": 2, "name": "Bob", "skills": ["Java", "C++", "Python", "Ruby"] }
{ "_id": 3, "name": "Charlie", "skills": ["C#", "Java", "Python", "JavaScript"] }
{ "_id": 4, "name": "David", "skills": ["PHP", "JavaScript", "Python", "Ruby"] }
{ "_id": 5, "name": "Eve", "skills": ["Ruby", "Python", "Java", "C#"] }
{ "_id": 6, "name": "Frank", "skills": ["JavaScript", "C++", "Python", "PHP"] }
{ "_id": 7, "name": "Grace", "skills": ["Java", "Python", "Ruby", "JavaScript"] }
{ "_id": 8, "name": "Helen", "skills": ["Python", "C++", "Java", "PHP"] }
{ "_id": 9, "name": "Ivy", "skills": ["JavaScript", "Python", "Ruby", "C#"] }
{ "_id": 10, "name": "Jack", "skills": ["C++", "Java", "Python", "JavaScript"] }

1. Removing an Element by Index (Using $unset)

// Remove the third skill from the skills array of the document with _id 1
db.users.updateOne(
{ "_id": 1 },
{ "$unset": { "skills.2": 1 } }
);

Output

[
{
_id: 1,
name: 'Alice',
skills: [ 'JavaScript', 'Python', null, 'Node.js' ]
}
]

2. Removing All Occurrences of a Value from an Array (Using $pull)

// Remove all occurrences of "Java" from the skills array for all documents
db.users.updateMany(
{},
{ "$pull": { "skills": "Java" } }
);

Output

[
{
_id: 1,
name: 'Alice',
skills: [ 'JavaScript', 'Python', null, 'Node.js' ]
},
{ _id: 2, name: 'Bob', skills: [ 'C++', 'Python', 'Ruby' ] },
{ _id: 3, name: 'Charlie', skills: [ 'C#', 'Python', 'JavaScript' ] },
{
_id: 4,
name: 'David',
skills: [ 'PHP', 'JavaScript', 'Python', 'Ruby' ]
},
{ _id: 5, name: 'Eve', skills: [ 'Ruby', 'Python', 'C#' ] },
{
_id: 6,
name: 'Frank',
skills: [ 'JavaScript', 'C++', 'Python', 'PHP' ]
},
{ _id: 7, name: 'Grace', skills: [ 'Python', 'Ruby', 'JavaScript' ] },
{ _id: 8, name: 'Helen', skills: [ 'Python', 'C++', 'PHP' ] },
{
_id: 9,
name: 'Ivy',
skills: [ 'JavaScript', 'Python', 'Ruby', 'C#' ]
},
{ _id: 10, name: 'Jack', skills: [ 'C++', 'Python', 'JavaScript' ] }
]

3. Adding a New Skill to an Array

// Add "SQL" to the skills array of the document with _id 2
db.users.updateOne(
{ "_id": 2 },
{ "$push": { "skills": "SQL" } }
);

Output

[ { _id: 2, name: 'Bob', skills: [ 'C++', 'Python', 'Ruby', 'SQL' ] } ]

4. Removing a Document by _id

// Remove the document with _id 3
db.users.deleteOne({ "_id": 3 });

Output

{ acknowledged: true, deletedCount: 1 }

5. Querying Documents with a Specific Skill

// Find all documents that have "JavaScript" in their skills array
db.users.find({ "skills": "JavaScript" });

Output

[
{
_id: 1,
name: 'Alice',
skills: [ 'JavaScript', 'Python', null, 'Node.js' ]
},
{
_id: 4,
name: 'David',
skills: [ 'PHP', 'JavaScript', 'Python', 'Ruby' ]
},
{
_id: 6,
name: 'Frank',
skills: [ 'JavaScript', 'C++', 'Python', 'PHP' ]
},
{ _id: 7, name: 'Grace', skills: [ 'Python', 'Ruby', 'JavaScript' ] },
{
_id: 9,
name: 'Ivy',
skills: [ 'JavaScript', 'Python', 'Ruby', 'C#' ]
},
{ _id: 10, name: 'Jack', skills: [ 'C++', 'Python', 'JavaScript' ] }
]

6. Querying Documents by _id

// Find the document with _id 4
db.users.findOne({ "_id": 4 });

Output

{
_id: 4,
name: 'David',
skills: [ 'PHP', 'JavaScript', 'Python', 'Ruby' ]
}

Conclusion

Overall, Removing array elements by index in MongoDB can be achieved using either the $unset or $pull operators. By understanding these methods, you can manipulate array data within MongoDB documents effectively. In this article, we explored how to remove array elements by index, providing examples and outputs to illustrate the process.


Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads