Mongo客户端不更新多个记录

时间:2015-07-27 16:38:08

标签: javascript mongodb

我有一个 MongoDB 集合,其中包含以下格式的许多文档:

{
    "_id" : ObjectId("55b64b79cf8b57c2face707d"),
    "my_id" : "MYMAINID00001",
    "position" : 4,
    "A" : 0,
    "B" : -2.17,
    "C" : -3.46
}

我正在尝试使用以下命令更新与my_id字段匹配的多条记录:

db.mycollection.update(
    {"my_id": "MYMAINID00001"}, 
    { $set: 
      {"my_id": "MYMAINID00001", 
       "start": 128, 
       "end": 255}
    },
    {
      $upsert: 1,
      $multi: 1
    }
)

但是,这只是创建包含4个字段的新文档:

{
    "_id" : ObjectId("55b64b79cf8b57c2face707c"),
    "my_id" : "MYMAINID00001",
    "start" : 128,
    "end" : 255
}

更新当前现有记录,以包含startend字段。

docs看,看起来我正确地做到了这一点,但显然有些不对劲。

有没有人知道为什么这个更新命令没有更新当前现有的记录?

我还在使用Mongo 2.6。

1 个答案:

答案 0 :(得分:1)

你做错了。没有$upsert$multi运算符

db.mycollection.update({ "my_id": "MYMAINID00001" }, 
    { "$set": { 
        "my_id": "MYMAINID00001", 
        "start": 128, 
        "end": 255
     }},
    { upsert: 1, multi: 1 }
)