insert(),insertOne()和insertMany()方法有什么区别?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了insert(),insertOne()和insertMany()方法有什么区别?相关的知识,希望对你有一定的参考价值。
MongoDB上的insert()
,insertOne()
和insertMany()
方法有什么区别。在什么情况下我应该使用每一个?
我阅读了文档,但是使用每个文档时都不清楚。
MongoDB上的insert(),insertOne()和insertMany()方法有什么区别
- 文档中提到的
db.collection.insert()
将一个或多个文档插入到集合中,并为单个插入返回WriteResult对象,并为批量插入返回BulkWriteResult对象。> var d = db.collection.insert({"b": 3}) > d WriteResult({ "nInserted" : 1 }) > var d2 = db.collection.insert([{"b": 3}, {'c': 4}]) > d2 BulkWriteResult({ "writeErrors" : [ ], "writeConcernErrors" : [ ], "nInserted" : 2, "nUpserted" : 0, "nMatched" : 0, "nModified" : 0, "nRemoved" : 0, "upserted" : [ ] })
- 文档中提到的
db.collection.insertOne()
将文档插入到集合中并返回如下所示的文档:> var document = db.collection.insertOne({"a": 3}) > document { "acknowledged" : true, "insertedId" : ObjectId("571a218011a82a1d94c02333") }
db.collection.insertMany()
将多个文档插入到集合中,并返回如下所示的文档:> var res = db.collection.insertMany([{"b": 3}, {'c': 4}]) > res { "acknowledged" : true, "insertedIds" : [ ObjectId("571a22a911a82a1d94c02337"), ObjectId("571a22a911a82a1d94c02338") ] }
在什么情况下我应该使用每一个?
insert()
方法在主要驱动程序中已弃用,因此,如果要将单个文档插入集合中,则应使用.insertOne()
方法;如果要将多个文档插入集合中,则应使用.insertMany
。当然,文档中没有提到这一点,但事实是没有人真正在shell中编写应用程序。同样的事情适用于updateOne
,updateMany
,deleteOne
,deleteMany
,findOneAndDelete
,findOneAndUpdate
和findOneAndReplace
。见Write Operations Overview。
db.collection.insert()
: 它允许您在集合中插入一个或多个文档。句法: 单一插入:db.collection.insert({<document>});
多次插入: db.collection.insert([,, ...]); 返回一个WriteResult
对象:WriteResult({ "nInserted" : 1 });
db.collection.insertOne()
: 它允许您在集合中准确插入1个文档。它的语法与insert()
中的单个插入语法相同。 返回以下文档:{ "acknowledged" : true, "insertedId" : ObjectId("56fc40f9d735c28df206d078") }
db.collection.insertMany()
: 它允许您在集合中插入一组文档。句法:db.collection.insertMany( { [ <document 1> , <document 2>, ... ] });
返回以下文档:{ "acknowledged" : true, "insertedIds" : [ ObjectId("562a94d381cb9f1cd6eb0e1a"), ObjectId("562a94d381cb9f1cd6eb0e1b"), ObjectId("562a94d381cb9f1cd6eb0e1c") ] }
所有这三个也允许您定义自定义writeConcern
,并且如果它不存在也创建一个集合。
错误处理也有区别,请查看here。 insert命令在成功和错误情况下都返回文档。但insertOne和insertMany命令会抛出异常。代码中的异常比评估返回的文档以找出错误更容易处理。可能是他们在sstyvane的回答中提到的驱动程序中被弃用的原因。
如果集合不存在,则insertOne()方法创建集合。如果再次输入相同的数据,mongod将创建另一个唯一ID以避免重复。
以上是关于insert(),insertOne()和insertMany()方法有什么区别?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用来自 Access VBA 的直通查询执行 SET IDENTITY_INSERT ON/OFF?
Java MySQL executeUpdate() 为重复键更新上的 INSERT ON 返回啥?