我有一个 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
}
不更新当前现有记录,以包含start
和end
字段。
从docs看,看起来我正确地做到了这一点,但显然有些不对劲。
有没有人知道为什么这个更新命令没有更新当前现有的记录?
我还在使用Mongo 2.6。
答案 0 :(得分:1)
你做错了。没有$upsert
或$multi
运算符
db.mycollection.update({ "my_id": "MYMAINID00001" },
{ "$set": {
"my_id": "MYMAINID00001",
"start": 128,
"end": 255
}},
{ upsert: 1, multi: 1 }
)