MongoDB предоставя insert()
метод (и два други) за добавяне на документи към база данни.
MongoDB предоставя следните три метода за вмъкване на документи в база данни:
insert()
insertOne()
insertMany()
insert()
Метод
insert()
метод вмъква един или повече документи в колекция. Всеки документ се предоставя като параметър. Името на колекцията е в началото на insert()
метод.
Ето синтаксиса за вмъкване на един документ:
db.collectionName.insert({ name: "value" })
В горния пример документът се състои от { name: "value" }
. Това е JSON документ. JSON документите се състоят от една или повече двойки име/стойност, затворени в къдрави скоби {}
.
MongoDB използва JSON документи за съхранение на данни, така че ние вмъкваме документи в този формат.
Вече използвахме този метод преди, когато създавахме база данни.
Нека добавим още един документ към нашата база данни:
db.artists.insert({ artistname: "Jorn Lande" })
Това вмъква документ с { artistname: "Jorn Lande" }
като неговото съдържание.
Сега, ако търсим изпълнители колекция, ще видим два документа (включително този, който създадохме по-рано):
> db.artists.find() { "_id" : ObjectId("5780fbf948ef8c6b3ffb0149"), "artistname" : "The Tea Party" } { "_id" : ObjectId("5781c9ac48ef8c6b3ffb014a"), "artistname" : "Jorn Lande" }
Имайте предвид, че MongoDB е създал _id
поле за документите. Ако не посочите такъв, MongoDB ще създаде такъв за вас. Можете обаче да предоставите това поле, когато правите вмъкване, ако предпочитате да имате контрол върху стойността на _id
поле.
db.artists.insert({ _id: 1, artistname: "AC/DC" })
Резултат:
> db.artists.find() { "_id" : ObjectId("5780fbf948ef8c6b3ffb0149"), "artistname" : "The Tea Party" } { "_id" : ObjectId("5781c9ac48ef8c6b3ffb014a"), "artistname" : "Jorn Lande" } { "_id" : 1, "artistname" : "AC/DC" }
_id
която MongoDB предоставя е 12-байтова стойност на ObjectId. Състои се от следните стойности;
- 4-байтова стойност, представляваща секундите от епохата на Unix,
- 3-байтов идентификатор на машината,
- 2-байтов идентификатор на процес и
- 3-байтов брояч, започващ със произволна стойност.
Създаване на няколко документа
Можете да вмъкнете няколко документа в рамките на един insert()
метод.
В този пример вмъкваме три документа:
db.artists.insert( [ { artistname: "The Kooks" }, { artistname: "Bastille" }, { artistname: "Gang of Four" } ] )
Имайте предвид, че документите се предоставят като масив. Документите са затворени в квадратни скоби []
, и те са разделени със запетаи.
Изпълнението на горния код води до следното съобщение:
BulkWriteResult({ "writeErrors" : [ ], "writeConcernErrors" : [ ], "nInserted" : 3, "nUpserted" : 0, "nMatched" : 0, "nModified" : 0, "nRemoved" : 0, "upserted" : [ ] })
Вградени документи
Един документ може да съдържа други документи, масиви и масиви от документи.
Можете също да предоставите няколко двойки име/стойност в рамките на документ, като ги разделите със запетая.
db.artists.insert({ artistname : "Deep Purple", albums : [ { album : "Machine Head", year : 1972, genre : "Rock" }, { album : "Stormbringer", year : 1974, genre : "Rock" } ] })
Резултат:
WriteResult({ "nInserted" : 1 })
Параметри
insert()
методът приема следните параметри.
Параметър | Тип | Описание |
---|---|---|
document | документ или масив | Документ или масив от документи за вмъкване в колекцията (както в горните примери). |
writeConcern | документ | Незадължителен параметър. Това е документ, изразяващ загрижеността за писане. Загрижеността за запис описва нивото на потвърждение, поискано от MongoDB за операции по запис към самостоятелен mongod или към набори от реплики или към разчленени клъстери. |
ordered | булева | Незадължителен параметър. Ако стойността е зададена на true , MongoDB ще извърши подредено вмъкване на документите в масива и ако възникне грешка с един от документите, MongoDB ще се върне без да обработва останалите документи в масива.
Ако стойността е зададена на |
insertOne()
Метод
Можете също да използвате insertOne()
метод за вмъкване на един документ в колекция:
db.musicians.insertOne({ _id: 1, name: "Ian Gillan", instrument: "Vocals" })
Тук сме посочили несъществуваща колекция. Както при insert()
метод, посочената колекция ще бъде създадена, ако все още не съществува.
Ще забележите, че изходът е различен от този, когато използвате insert()
метод:
{ "acknowledged" : true, "insertedId" : 1 }
Вградени документи
Както при insert()
, можете да вмъквате вградени документи и масиви от документи:
db.artists.insertOne({ artistname : "Miles Davis", albums : [ { album : "Kind of Blue", year : 1959, genre : "Jazz" }, { album : "Bitches Brew", year : 1970, genre : "Jazz" } ] })
Резултат:
{ "acknowledged" : true, "insertedId" : ObjectId("578214f048ef8c6b3ffb0159") }
insertMany()
Метод
Както подсказва името, можете да използвате insertMany()
за да вмъкнете няколко документа:
db.musicians.insertMany( [ { _id: 2, name: "Ian Paice", instrument: "Drums", born: 1948 }, { _id: 3, name: "Roger Glover", instrument: "Bass", born: 1945 }, { _id: 4, name: "Steve Morse", instrument: "Guitar", born: 1954 }, { _id: 5, name: "Don Airey", instrument: "Keyboards", born: 1948 }, { _id: 6, name: "Jeff Martin", instrument: "Vocals", born: 1969 }, { _id: 7, name: "Jeff Burrows", instrument: "Drums", born: 1968 }, { _id: 8, name: "Stuart Chatwood", instrument: "Bass", born: 1969 }, ] )
Отново изходът при използване на insertMany()
е различно, отколкото ако сте вмъкнали няколко документа с помощта на insert()
метод:
{ "acknowledged" : true, "insertedIds" : [ 2, 3, 4, 5, 6, 7, 8 ] }
Вградени документи
db.artists.insertMany( [ { artistname : "Robben Ford", albums : [ { album : "Bringing it Back Home", year : 2013, genre : "Blues" }, { album : "Talk to Your Daughter", year : 1988, genre : "Blues" } ] }, { artistname : "Snoop Dogg", albums : [ { album : "Tha Doggfather", year : 1996, genre : "Rap" }, { album : "Reincarnated", year : 2013, genre : "Reggae" } ] } ])
Резултат:
{ "acknowledged" : true, "insertedIds" : [ ObjectId("578217c248ef8c6b3ffb015a"), ObjectId("578217c248ef8c6b3ffb015b") ] }