Siren O
Siren O

Reputation: 59

Mongodb remove field from Array objects all documents?

I have a collection that has documents looks something like this:

{
  _id : 21353456,
  product : "xy",
  text : "asdf",
  reviews : [
    {
       username : "User1",
       userID: 12
       text : "hi",
     },
     {
       username : "User2",
       userID: 123
       text : "hi1",
     }
   ]
}

I want to remove the field in username from the objects in this array. I tried this db.collection.update({}, {$unset: {"reviews.username": 1}}, {multi: true}) I tried with even updateMany and it just matchedCouunt and acknowledged.

Upvotes: 1

Views: 3033

Answers (1)

Or Nakash
Or Nakash

Reputation: 3329

Try using the positional identifier and do something like:

db.collection.update({}, {$unset: {"reviews.$[].username":true}}, {multi:true})

Personally I prefer using the method below:

db.collection.update({"reviews.username": {$exists: true}}, {$unset: {"reviews.$.username":true}}, {multi:true})

Because sometimes you should check if it exists before you do the deleting (this way you won't get any errors).

Upvotes: 2

Related Questions