Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 什么';insert()、insertOne()和insertMany()方法之间的区别是什么?_Mongodb_Nosql - Fatal编程技术网

Mongodb 什么';insert()、insertOne()和insertMany()方法之间的区别是什么?

Mongodb 什么';insert()、insertOne()和insertMany()方法之间的区别是什么?,mongodb,nosql,Mongodb,Nosql,MongoDB上的insert()、insertOne()和insertMany()方法之间有什么区别。在什么情况下我应该使用每一个 我看了这些文件,但不清楚什么时候使用它们 db.collection.insert(): 它允许您在集合中插入一个或多个文档。语法: db.collection.insertMany( { [ <document 1> , <document 2>, ... ] }); 单插入:db.collection.insert({})

MongoDB上的
insert()
insertOne()
insertMany()
方法之间有什么区别。在什么情况下我应该使用每一个

我看了这些文件,但不清楚什么时候使用它们

  • db.collection.insert()

    它允许您在集合中插入一个或多个文档。语法:

    db.collection.insertMany(
        { [ <document 1> , <document 2>, ... ] });
    
    • 单插入:
      db.collection.insert({})
    • 多重插入:

      db.collection.insert([ , ... ]);

    返回一个
    WriteResult
    对象:
    WriteResult({“n插入”:1})

  • db.collection.insertOne()

    它允许您在集合中恰好插入一个文档。其语法与
    insert()
    中的single insert相同

    返回以下文档:

    {
       "acknowledged" : true,
       "insertedId" : ObjectId("56fc40f9d735c28df206d078")
    }
    
    {
       "acknowledged" : true,
       "insertedIds" : [
          ObjectId("562a94d381cb9f1cd6eb0e1a"),
          ObjectId("562a94d381cb9f1cd6eb0e1b"),
          ObjectId("562a94d381cb9f1cd6eb0e1c")
       ]
    }
    
  • db.collection.insertMany()

    它允许您在集合中插入文档数组。语法:

    db.collection.insertMany(
        { [ <document 1> , <document 2>, ... ] });
    
  • 这三种方法都允许您定义自定义
    writeConcern
    ,如果不存在,还可以创建一个集合

    MongoDB上的insert()、insertOne()和insertMany()方法有什么区别

    • 如文档中所述,将一个或多个文档插入集合并返回 用于单个插入的对象和用于批量插入的对象

      var d=db.collection.insert({“b”:3}) >d WriteResult({“n插入”:1}) >var d2=db.collection.insert([{“b”:3},{'c':4}]) >d2 批量写入结果({ “写入错误”:[], “writeConcernErrors”:[], “未插入”:2, “nUpserted”:0, “nMatched”:0, “nModified”:0, “未删除”:0, “上升”:[] })
    • 如文档中所述,将文档插入集合并返回如下所示的文档:

      var document=db.collection.insertOne({“a”:3}) >文件 { “承认”:正确, “insertedId”:ObjectId(“571A18011A82A1D94C02333”) }
    • 将多个文档插入到集合中并返回如下所示的文档:

      var res=db.collection.insertMany([{“b”:3},{'c':4}) >res { “承认”:正确, “插入式”:[ 目标(“571a22a911a82a1d94c02337”), ObjectId(“571a22a911a82a1d94c02338”) ] }
    在什么情况下我应该使用每一个

    主驱动程序中不推荐使用
    insert()
    方法,因此您应该使用
    每当您想在收藏中插入单个文档时,使用
    .insertOne()
    方法;每当您想在收藏中插入多个文档时,使用
    .insertMany
    方法。当然,文档中没有提到这一点,但事实是没有人真正在shell中编写应用程序。这同样适用于、、和。请参阅。

    如果集合不存在,则insertOne()方法将创建集合。如果您再次输入相同的数据,mongod将创建另一个唯一的id以避免重复。

    错误处理也存在差异,请检查。insert命令在成功和错误情况下都返回文档。但是insertOne和insertMany命令抛出异常。在代码中处理异常比计算返回的文档以找出错误更容易。可能是sstyvane的回答中提到的驱动程序中不推荐它们的原因。

    Hi ayushgp,感谢您的回答。但我还是有点怀疑。如果insert()可以解决所有情况,为什么我要使用insertOne()或insertMany()?您可以将创建的文档的ID与其他2个一起返回。Insert只提供有关创建了多少文档的信息。@MarcosMendes还仅与
    Insert()
    兼容,而与insertMany和insertOne不兼容。不完整的答案:db.collection.Insert()返回BulkWriterResult,如果文档数组作为参数,它在节点中是否已被弃用?@AbdulRehmanSayed在所有官方驱动程序中都是,即使文档中提到了它。没有看到中的
    insert()
    被弃用的位置,您在其他页面上看到了吗?我想您错过了这一部分:insert()方法在主驱动程序中已被弃用,因此当您要向集合中插入单个文档时,应使用.insertOne()方法;当您要向集合中插入多个文档时,应使用.insertMany方法。当然,文档中没有提到这一点,但事实是没有人真正在shell中编写应用程序@Bradsolomorry,我没有。感谢RespondingSertMany()在旧版本的mongodbAll中不可用。有三个命令可以执行此操作。但问题是这三个命令之间的区别。