Mongodb:UpdateMany不更新嵌套数组数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mongodb:UpdateMany不更新嵌套数组数据相关的知识,希望对你有一定的参考价值。

我尝试更新许多数据,但它没有更新。我正在使用这样的命令

db.transactions.updateMany({"request_by.0.userId":"060dcaf49c13e9c380ebfccd"},{$set: {"request_by.0.city":"aaa"}});

结果

{ "acknowledged" : true, "matchedCount" : 2, "modifiedCount" : 0 }

我的交易收集数据

{
    "_id": "9e2dfeec3f31db6415108a3d",
    "request_by": [{
        "userId": "060dcaf49c13e9c380ebfccd",
        "email": "derp@gmail.com",
        "tel": "0128371827",
        "name": "Derp the joker",
        "role": "guest",
        "iat": 1545564382,
        "exp": 1545582382
    }],
    "status": "active",
    "invoice": "2018122318410976",
    "created_at": "2018-12-23T11:41:09.203Z",
    "updated_at": "2018-12-23T11:41:09.203Z",
    "__v": 0
}
答案

你必须使用$[]全部位置运算符来更新数组中的多个元素

db.transactions.updateMany(
  { "request_by": { "$elemMatch": { "userId": ObjectId("060dcaf49c13e9c380ebfccd") }}},
  { "$set": { "request_by.$[].city": "aaa" }}
)

以上是关于Mongodb:UpdateMany不更新嵌套数组数据的主要内容,如果未能解决你的问题,请参考以下文章

mongoose 中的 UpdateMany 无法正常工作,但直接在 mongodb 中可以正常工作

更新 mongodb 中的嵌套数组

更新数组mongodb内的嵌套数组[重复]

使用 MongoDB 更新嵌套数组

使用 MongoDB 更新嵌套数组

mongoDB:更新嵌套数组元素