I have a collection in MongoDB, which is like following:
{ "_id" : "5327010328645530500", "members" : [ { "participationCoeff" : 1, "tweetID" : "5327010328645530500" }, { "participationCoeff" : 1, "tweetID" : "2820402625046999289" }, { "participationCoeff" : 0.6666666666666666, "tweetID" : "6122060484520699114" }, { "participationCoeff" : 1, "tweetID" : "4656669980325872747" } ] } { "_id" : "2646953848367646922", "members" : [ { "participationCoeff" : 1, "tweetID" : "2646953848367646922" }, { "participationCoeff" : 0.75, "tweetID" : "7750833069621794130" }, { "participationCoeff" : 0.5, "tweetID" : "6271782334664128453" } ] }
Basically, collection have clusters, where a cluster has an _id
field and a members
field. Members field is an array of documents, having following format.
{ "participationCoeff" : 1, "tweetID" : "5327010328645530500" }
Now, from time to time, I have to delete these sub-documents in members attribute of cluster document, by matching tweetID.
However, I'm not able to find a query to achieve this effect. Basically, a tweetID will participate in many clusters, and hence will appear in multiple sub-documents of 'members' attribute of various clusters. I want to supply a bulk $pull operation, where I can remove all the sub-documents in all the clusters (i.e. their members attribute) which match on a particular tweetID.
Some help and intuition will be really helpful.
To remove an element, update, and use $pull in MongoDB. The $pull operator removes from an existing array all instances of a value or values that match a specified condition.
To remove an element from a doubly-nested array in MongoDB document, you can use $pull operator. Now field "UserZipCode": "20010" has been removed from a doubly-nested array.
That's exactly what the $pull
operator does, so in the shell you could use an update
like:
db.clusters.update({}, {$pull: {members: {tweetID: '5327010328645530500'}}}, {multi: true})
Set the multi
option so that every document is updated, not just the first one.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With