Jaký je rozdíl mezi metodami insert(), insertOne() a insertMany() na MongoDB
-
db.collection.insert()
jak je uvedeno v dokumentaci, vloží dokument nebo dokumenty do kolekce a vrátí objekt WriteResult pro jednotlivé přílohy a objekt BulkWriteResult pro hromadné vložení.> 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()
jak je uvedeno v dokumentaci, vloží dokument do sbírky a vrátí dokument, který vypadá takto:> var document = db.collection.insertOne({"a": 3}) > document { "acknowledged" : true, "insertedId" : ObjectId("571a218011a82a1d94c02333") }
-
db.collection.insertMany()
vloží více dokumentů do kolekce a vrátí dokument, který vypadá takto:> var res = db.collection.insertMany([{"b": 3}, {'c': 4}]) > res { "acknowledged" : true, "insertedIds" : [ ObjectId("571a22a911a82a1d94c02337"), ObjectId("571a22a911a82a1d94c02338") ] }
V jaké situaci bych měl každý z nich použít?
insert()
metoda je v hlavním ovladači zastaralá, takže byste měli použít the .insertOne()
metoda, kdykoli chcete vložit jeden dokument do své sbírky a .insertMany
když chcete do své sbírky vložit více dokumentů. To samozřejmě není uvedeno v dokumentaci, ale faktem je, že nikdo ve skutečnosti nepíše aplikaci v shellu. Totéž platí pro updateOne
, updateMany
, deleteOne
, deleteMany
, findOneAndDelete
, findOneAndUpdate
a findOneAndReplace
. Viz Přehled operací zápisu.