MongoDB用id 1替换整个文档

MongoDB用id 1替换整个文档,mongodb,Mongodb,奎。替换id为1的整个文档 db.emp.save({u id:1}) 是否正确?您可能正在寻找mongodb的方法。它可以用作: db.restaurant.replaceOne( { "_id" : "1", "somfield" : "Old value" }, { "_id" : "1", "somfield" : "New value", "additional" : "addedField" } ); 注意-如果要替换的文档的过滤器是第一个参数,那么第

奎。替换id为1的整个文档

db.emp.save({u id:1})


是否正确?

您可能正在寻找mongodb的方法。它可以用作:

db.restaurant.replaceOne(
      { "_id" : "1", "somfield" : "Old value" },
      { "_id" : "1", "somfield" : "New value", "additional" : "addedField" }
   );

注意-如果要替换的文档的过滤器是第一个参数,那么第二个参数就是要替换它的文档。

让我们跳进shell,看看
保存
方法

> 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));
    }
}
>
现在,如果我们把逻辑简化为简单的步骤

对象上不存在
\u id

  • 创建一个新的ObjectId
  • 将字段附加到对象
  • 调用
    insert
    对传入选项的集合进行保存
\u id
存在于对象上

  • 将传入的选项与
    {upsert:true}
    合并,这样opt
    {a:1,b:2}
    +
    {upsert:true}
    将是
    {a:1,b:2,upsert:true}
  • 使用合并选项调用集合的更新,并查询对象
    \u id

替换为什么?替换id为1的整个文档。替换时,删除现有文档,并用新文档更新。我在问关于那个文档的问题。你已经获得了+1,因为你详细解释了,而不是-1