Home > Net >  Mongodb remove field from Array objects all documents?
Mongodb remove field from Array objects all documents?

Time:03-26

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.

CodePudding user response:

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).

  • Related