Qual é a diferença entre os métodos insert(), insertOne() e insertMany() no MongoDB
-
db.collection.insert()
conforme mencionado na documentação, insere um documento ou documentos em uma coleção e retorna um objeto WriteResult para inserções únicas e um objeto BulkWriteResult para inserções em massa.
> 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()
conforme mencionado na documentação insere um documento em uma coleção e retorna um documento que se parece com este:
> var document = db.collection.insertOne({"a": 3}) > document { "acknowledged" : true, "insertedId" : ObjectId("571a218011a82a1d94c02333") }
-
db.collection.insertMany()
insere vários documentos em uma coleção e retorna um documento parecido com este:
> var res = db.collection.insertMany([{"b": 3}, {'c': 4}]) > res { "acknowledged" : true, "insertedIds" : [ ObjectId("571a22a911a82a1d94c02337"), ObjectId("571a22a911a82a1d94c02338") ] }
Em que situação devo usar cada um?
O
insert()
O método está obsoleto no driver principal, então você deve usar o .insertOne()
sempre que você quiser inserir um único documento em sua coleção e o .insertMany
quando você deseja inserir vários documentos em sua coleção. Claro que isso não é mencionado na documentação, mas o fato é que ninguém escreve uma aplicação no shell. A mesma coisa se aplica a updateOne
, updateMany
, deleteOne
, deleteMany
, findOneAndDelete
, findOneAndUpdate
e findOneAndReplace
. Consulte Visão geral das operações de gravação.