阙。替换_id为1的整个文档。
db.emp.save({_ id:1})
是对还是不对?
答案 0 :(得分:1)
让我们跳转到shell,看看save
方法
> db.test.save
function (obj, opts) {
if (obj == null)
throw Error("can't save a null");
if (typeof(obj) == "number" || typeof(obj) == "string")
throw Error("can't save a number or string");
if (typeof(obj._id) == "undefined") {
obj._id = new ObjectId();
return this.insert(obj, opts);
} else {
return this.update({_id: obj._id}, obj, Object.merge({upsert: true}, opts));
}
}
>
现在,如果我们将逻辑分解为简单的步骤。
对象
上不存在_id
insert
_id
存在于对象
{upsert: true}
合并,以便选择{a: 1, b: 2 }
+ {upsert: true}
为{a: 1, b: 2, upsert: true }
_id
答案 1 :(得分:0)
你可能正在寻找mongodb的replaceOne
方法。它可以用作:
db.restaurant.replaceOne(
{ "_id" : "1", "somfield" : "Old value" },
{ "_id" : "1", "somfield" : "New value", "additional" : "addedField" }
);
注意 - 第一个参数,如果要替换的文档的过滤器,第二个参数是将替换它的文档。