В MongoDB db.collection.insert()
метод вмъква документ или документи в колекция.
collection
част е името на колекцията, в която да вмъкнете документа/ите.
Пример
Ето пример за използване на db.collection.insert()
за да вмъкнете множество документи в колекция, наречена pets
:
db.pets.insert([
{ _id: 1, name: "Wag", type: "Dog" },
{ _id: 2, name: "Bark", type: "Dog" },
{ _id: 3, name: "Meow", type: "Cat" }
])
Резултат:
BulkWriteResult({ "writeErrors" : [ ], "writeConcernErrors" : [ ], "nInserted" : 3, "nUpserted" : 0, "nMatched" : 0, "nModified" : 0, "nRemoved" : 0, "upserted" : [ ] })
db.collection.insert()
метод връща обект, който съдържа състоянието на операцията вмъкване.
Върнатият обект зависи от това дали е вмъкнат един или няколко документа.
- Когато се вмъкне единичен документ, той връща
WriteResult
обект. - Когато се вмъкне масив от документи, той връща
BulkWriteResult
обект.
Можем да видим, че горният пример върна BulkWriteResult
обект. Това е така, защото добавихме масив от документи. Щеше да направи това, дори ако масивът съдържаше само един елемент.
Сега, ако използваме db.collection.find()
за да разгледаме колекцията, ще видим новодобавените документи.
db.pets.find()
Резултат:
{ "_id" : 1, "name" : "Wag", "type" : "Dog" } { "_id" : 2, "name" : "Bark", "type" : "Dog" } { "_id" : 3, "name" : "Meow", "type" : "Cat" }
В този случай нашите три документа са единствените в колекцията и така са върнати само тези документи.
Въпреки това, ако колекцията беше голяма, бихме могли да използваме идентификаторите на документи, за да стесним резултата само до документите, които ни интересуват.
db.pets.find({_id: {$in: [1,2,3]}})
Резултат:
{ "_id" : 1, "name" : "Wag", "type" : "Dog" } { "_id" : 2, "name" : "Bark", "type" : "Dog" } { "_id" : 3, "name" : "Meow", "type" : "Cat" }
Ами ако колекцията не съществува?
Ако колекцията не съществува, тя се създава и документите се добавят към нея.
Ако колекцията вече съществува, тогава документите просто се добавят към нея (при условие, че техният _id
стойностите не са в конфликт с никакви съществуващи).
Когато създадох този пример, колекцията не съществуваше и така операцията за вмъкване я създаде.
_id
Поле
_id
полето е уникално поле за идентификатор в MongoDB.
Както беше показано в предишния пример, можете да предоставите свой собствен _id
поле в документа. Ако го направите, тогава стойността му трябва да е уникална в колекцията. Това е така, защото вашият _id
полето ще се използва като уникален идентификатор на документа.
Ето пример за вмъкване на документ без предоставяне на _id
полета.
db.pets.insert(
{ name: "Bruce", type: "Bat" }
)
Резултат:
WriteResult({ "nInserted" : 1 })
Имайте предвид, че в този случай методът връща WriteResult
обект вместо BulkWriteResult
обект. Това е така, защото вмъкнахме един документ (и той не беше в масив).
Сега да разгледаме колекцията отново.
db.pets.find()
Резултат:
{ "_id" : 1, "name" : "Wag", "type" : "Dog" } { "_id" : 2, "name" : "Bark", "type" : "Dog" } { "_id" : 3, "name" : "Meow", "type" : "Cat" } { "_id" : ObjectId("5fe323d837b49e0faf1af218"), "name" : "Bruce", "type" : "Bat" }
Можем да видим, че нашият нов документ е включен в колекцията и има _id
поле с автоматично генерирана стойност.
ordered
Параметър
db.collection.insert()
метод също така приема ordered
параметър. Това е булев параметър със стойност по подразбиране true
.
ordered
параметърът указва дали операцията вмъкване трябва да бъде подредена или неподредена.
Ако ordered
е настроен на false
, документите се вмъкват в неподреден формат и могат да бъдат пренаредени от mongod
за повишаване на производителността.
При подредени вмъквания, ако възникне грешка по време на вмъкване на един от документите, MongoDB се връща при грешка, без да обработва останалите документи в масива.
При неподредени вмъквания, ако възникне грешка по време на вмъкване на един от документите, MongoDB продължава да вмъква останалите документи в масива.
Повече информация
db.collection.insert()
методът също така приема writeConcern
аргумент, който описва нивото на потвърждение, поискано от MongoDB за операции по запис.
Вижте документацията на MongoDB за db.collection.insert()
за повече информация.