В MongoDB db.collection.insertMany()
метод вмъква множество документи в колекция.
collection
част е името на колекцията, в която да вмъкнете документите.
Пример
Ето пример за използване на db.collection.insertMany()
за да вмъкнете множество документи в колекция, наречена pets
:
db.pets.insertMany([
{ _id: 1, name: "Wag", type: "Dog" },
{ _id: 2, name: "Bark", type: "Dog" },
{ _id: 3, name: "Meow", type: "Cat" }
])
Резултат:
{ "acknowledged" : true, "insertedIds" : [ 1, 2, 3 ] }
db.collection.insertMany()
метод връща документ, съдържащ:
- Булева
acknowledged
катоtrue
ако операцията се изпълняваше със загриженост за запис илиfalse
ако загрижеността за запис е деактивирана. - Масив от
_id
стойности за всеки успешно вмъкнат документ.
Сега, ако използваме 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.insertMany([
{ name: "Bruce", type: "Bat" },
{ name: "Sweetie", type: "Honey Badger" }
])
Резултат:
{ "acknowledged" : true, "insertedIds" : [ ObjectId("5fe30ef737b49e0faf1af215"), ObjectId("5fe30ef737b49e0faf1af216") ] }
_id
стойностите на документите се връщат. Можем да ги използваме, за да търсим в колекцията само документите, които вмъкнахме.
Но в този случай нека разгледаме цялата колекция.
db.pets.find()
Резултат:
{ "_id" : 1, "name" : "Wag", "type" : "Dog" } { "_id" : 2, "name" : "Bark", "type" : "Dog" } { "_id" : 3, "name" : "Meow", "type" : "Cat" } { "_id" : ObjectId("5fe30ef737b49e0faf1af215"), "name" : "Bruce", "type" : "Bat" } { "_id" : ObjectId("5fe30ef737b49e0faf1af216"), "name" : "Sweetie", "type" : "Honey Badger" }
Виждаме, че нашите два нови документа са включени в колекцията.
ordered
Параметър
db.collection.insertMany()
метод също така приема ordered
параметър. Това е булев параметър със стойност по подразбиране true
.
ordered
параметърът указва дали операцията вмъкване трябва да бъде подредена или неподредена.
Ако ordered
е настроен на false
, документите се вмъкват в неподреден формат и могат да бъдат пренаредени от mongod
за повишаване на производителността.
При подредени вмъквания, ако възникне грешка по време на вмъкване на един от документите, MongoDB се връща при грешка, без да обработва останалите документи в масива.
При неподредени вмъквания, ако възникне грешка по време на вмъкване на един от документите, MongoDB продължава да вмъква останалите документи в масива.
Повече информация
db.collection.insertMany()
методът също така приема writeConcern
аргумент, който описва нивото на потвърждение, поискано от MongoDB за операции по запис.
Вижте документацията на MongoDB за db.collection.insertMany()
за повече информация.