Actually I need to remove an element from the array based on its position. Using $pop we can remove element from top or bottom (considering it as a stack. 0th element at top
From documentation:
{ $pull : { field : {$gt: 3} } } removes array elements greater than 3
So i suppose that you can do somethig like this for now:
{ $pull : { field : {$gt: 3, $lt: 5} } } // shoud remove elemet in 4 position
Or try update using position operator, i suppose shoud be something like this:
{ $pull : "field.4" }
{ $pull : {"field.$": 4}}
It is only a suggestion, because i can't test it right now.
Update:
Seems you cant do it right know in one step(there is such bug in jira)
But you can remove using unset element in position and that pull elemets with null value:
{$unset : {"array.4" : 1 }}
{$pull : {"array" : null}}
Here's your answer MongoDB pull array element from a collection
To remove specific element from an array of some document first you need to identify this element. For instance I have a document with array and every element of this array is an object:
`{ "_id" : ObjectId("5140f34888dd50971900002d"), "_permissions" : { "edit" : [ { "profile_id" : NumberLong(123), "comment" : "app/project owner" }, { "profile_id" : NumberLong("153579099841888257"), "comment" : "project admin" }, { "profile_id" : NumberLong("153579095869882369"), "comment" : "project admin" } ], "view" : [ { "profile_id" : NumberLong(123), "comment" : "app/project owner" }, { "profile_id" : NumberLong("153579099841888257"), "comment" : "project admin" }, { "profile_id" : NumberLong("153579095869882369"), "comment" : "project admin" } ] } }`
So let's remove "profile_id" with "153579099841888257" value from "_permissions.view" array. Here we go
`db.collection.update({_id: ObjectId("5140f34888dd50971900002d")}, {$pull:{"_permissions.view": {"profile_id": NumberLong("153579099841888257")}}});`
That is how possible to do that with latest mongodb v4.2, ugly but working
_id: ObjectId("5e4539cb6aebbeaa0a6b8fe7")
}, [
{ $set:
{ notes:
{
$concatArrays: [
{ $slice: ['$notes', 4] },
{ $slice: ['$notes', { $add: [1, 4] }, { $size: '$notes' }]}
]
}
}
}
])```