MongoDB leverer insert()
metode (og to andre) til at tilføje dokumenter til en database.
MongoDB giver følgende tre metoder til at indsætte dokumenter i en database:
insert()
insertOne()
insertMany()
insert()
Metode
insert()
metode indsætter et eller flere dokumenter i en samling. Hvert dokument er angivet som en parameter. Samlingens navn er sat foran insert()
metode.
Her er syntaksen for at indsætte et enkelt dokument:
db.collectionName.insert({ name: "value" })
I ovenstående eksempel består dokumentet af { name: "value" }
. Dette er et JSON-dokument. JSON-dokumenter består af et eller flere navn/værdi-par, omgivet af krøllede parenteser {}
.
MongoDB bruger JSON-dokumenter til at gemme data, så det er derfor, vi indsætter dokumenter i dette format.
Vi har allerede brugt denne metode tidligere, da vi oprettede en database.
Lad os tilføje endnu et dokument til vores database:
db.artists.insert({ artistname: "Jorn Lande" })
Dette indsætter et dokument med { artistname: "Jorn Lande" }
som dens indhold.
Hvis vi nu søger efter kunstnerne samling, vil vi se to dokumenter (inklusive det, vi oprettede tidligere):
> db.artists.find() { "_id" : ObjectId("5780fbf948ef8c6b3ffb0149"), "artistname" : "The Tea Party" } { "_id" : ObjectId("5781c9ac48ef8c6b3ffb014a"), "artistname" : "Jorn Lande" }
Bemærk, at MongoDB har oprettet en _id
felt for dokumenterne. Hvis du ikke angiver en, vil MongoDB oprette en til dig. Du kan dog angive dette felt, når du laver indsættelsen, hvis du foretrækker at have kontrol over værdien af _id
felt.
db.artists.insert({ _id: 1, artistname: "AC/DC" })
Resultat:
> db.artists.find() { "_id" : ObjectId("5780fbf948ef8c6b3ffb0149"), "artistname" : "The Tea Party" } { "_id" : ObjectId("5781c9ac48ef8c6b3ffb014a"), "artistname" : "Jorn Lande" } { "_id" : 1, "artistname" : "AC/DC" }
_id
som MongoDB leverer, er en 12-byte ObjectId-værdi. Den består af følgende værdier;
- en 4-byte værdi, der repræsenterer sekunderne siden Unix-epoken,
- en 3-byte maskin-id,
- et 2-byte proces-id, og
- en 3-byte tæller, der starter med en tilfældig værdi.
Opret flere dokumenter
Du kan indsætte flere dokumenter inden for en enkelt insert()
metode.
I dette eksempel indsætter vi tre dokumenter:
db.artists.insert( [ { artistname: "The Kooks" }, { artistname: "Bastille" }, { artistname: "Gang of Four" } ] )
Bemærk, at dokumenterne leveres som et array. Dokumenterne er omgivet af firkantede parenteser []
, og de er adskilt af kommaer.
Kørsel af ovenstående kode resulterer i følgende meddelelse:
BulkWriteResult({ "writeErrors" : [ ], "writeConcernErrors" : [ ], "nInserted" : 3, "nUpserted" : 0, "nMatched" : 0, "nModified" : 0, "nRemoved" : 0, "upserted" : [ ] })
Indlejrede dokumenter
Et dokument kan indeholde andre dokumenter, arrays og arrays af dokumenter.
Du kan også angive flere navne-/værdipar i et dokument ved at adskille dem med et komma.
db.artists.insert({ artistname : "Deep Purple", albums : [ { album : "Machine Head", year : 1972, genre : "Rock" }, { album : "Stormbringer", year : 1974, genre : "Rock" } ] })
Resultat:
WriteResult({ "nInserted" : 1 })
Parametre
insert()
metoden accepterer følgende parametre.
Parameter | Typ | Beskrivelse |
---|---|---|
document | dokument eller array | Et dokument eller en række dokumenter, der skal indsættes i samlingen (som i ovenstående eksempler). |
writeConcern | dokument | Valgfri parameter. Dette er et dokument, der udtrykker skrivebekymringen. En skrivebekymring beskriver det bekræftelsesniveau, der anmodes om fra MongoDB for skriveoperationer til en selvstændig mongod eller til replikasæt eller til sharded clusters. |
ordered | boolesk | Valgfri parameter. Hvis værdien er sat til true , vil MongoDB udføre en bestilt indsættelse af dokumenterne i arrayet, og hvis der opstår en fejl med et af dokumenterne, vil MongoDB returnere uden at behandle de resterende dokumenter i arrayet.
Hvis værdien er sat til |
insertOne()
Metode
Du kan også bruge insertOne()
metode til at indsætte et enkelt dokument i en samling:
db.musicians.insertOne({ _id: 1, name: "Ian Gillan", instrument: "Vocals" })
Her har vi specificeret en ikke-eksisterende samling. Som med insert()
metode, vil den angivne samling blive oprettet, hvis den ikke allerede eksisterer.
Du vil bemærke, at outputtet er anderledes end når du bruger insert()
metode:
{ "acknowledged" : true, "insertedId" : 1 }
Indlejrede dokumenter
Som med insert()
, kan du indsætte indlejrede dokumenter og arrays af dokumenter:
db.artists.insertOne({ artistname : "Miles Davis", albums : [ { album : "Kind of Blue", year : 1959, genre : "Jazz" }, { album : "Bitches Brew", year : 1970, genre : "Jazz" } ] })
Resultat:
{ "acknowledged" : true, "insertedId" : ObjectId("578214f048ef8c6b3ffb0159") }
insertMany()
Metode
Som navnet antyder, kan du bruge insertMany()
for at indsætte flere dokumenter:
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 }, ] )
Igen, outputtet ved brug af insertMany()
er anderledes, end hvis du havde indsat flere dokumenter ved hjælp af insert()
metode:
{ "acknowledged" : true, "insertedIds" : [ 2, 3, 4, 5, 6, 7, 8 ] }
Indlejrede dokumenter
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" } ] } ])
Resultat:
{ "acknowledged" : true, "insertedIds" : [ ObjectId("578217c248ef8c6b3ffb015a"), ObjectId("578217c248ef8c6b3ffb015b") ] }