Mongodb 从 Array 对象的所有文档中删除字段?

Mongodb remove field from Array objects all documents?

我有一个集合,其中包含如下所示的文档:

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

我想从这个数组中的对象中删除用户名中的字段。 我试过这个 db.collection.update({}, {$unset: {"reviews.username": 1}}, {multi: true}) 我什至尝试了 updateMany,它只是匹配了 Couunt 并得到了确认。

尝试使用位置标识符并执行如下操作:

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

我个人更喜欢使用以下方法:

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

因为有时你应该在删除之前检查它是否存在(这样你就不会得到任何错误)。