MongoDB biedt de insert()
methode (en twee andere) voor het toevoegen van documenten aan een database.
MongoDB biedt de volgende drie methoden voor het invoegen van documenten in een database:
insert()
insertOne()
insertMany()
De insert()
Methode
De insert()
methode voegt een of meer documenten in een verzameling in. Elk document wordt geleverd als een parameter. De collectienaam wordt toegevoegd aan de insert()
methode.
Hier is de syntaxis voor het invoegen van een enkel document:
db.collectionName.insert({ name: "value" })
In het bovenstaande voorbeeld bestaat het document uit { name: "value" }
. Dit is een JSON-document. JSON-documenten bestaan uit een of meer naam/waarde-paren, tussen accolades {}
.
MongoDB gebruikt JSON-documenten om gegevens op te slaan, daarom voegen we documenten in dit formaat in.
We hebben deze methode al eerder gebruikt toen we een database maakten.
Laten we nog een document aan onze database toevoegen:
db.artists.insert({ artistname: "Jorn Lande" })
Dit voegt een document in met { artistname: "Jorn Lande" }
als de inhoud ervan.
Als we nu zoeken naar de artiesten collectie, zullen we twee documenten zien (inclusief degene die we eerder hebben gemaakt):
> db.artists.find() { "_id" : ObjectId("5780fbf948ef8c6b3ffb0149"), "artistname" : "The Tea Party" } { "_id" : ObjectId("5781c9ac48ef8c6b3ffb014a"), "artistname" : "Jorn Lande" }
Merk op dat MongoDB een _id
. heeft aangemaakt veld voor de documenten. Als u er geen opgeeft, maakt MongoDB er een voor u aan. U kunt dit veld echter opgeven bij het invoegen als u liever controle heeft over de waarde van de _id
veld.
db.artists.insert({ _id: 1, artistname: "AC/DC" })
Resultaat:
> db.artists.find() { "_id" : ObjectId("5780fbf948ef8c6b3ffb0149"), "artistname" : "The Tea Party" } { "_id" : ObjectId("5781c9ac48ef8c6b3ffb014a"), "artistname" : "Jorn Lande" } { "_id" : 1, "artistname" : "AC/DC" }
De _id
die MongoDB biedt, is een ObjectId-waarde van 12 bytes. Het bestaat uit de volgende waarden;
- een waarde van 4 bytes die de seconden vertegenwoordigt sinds het Unix-tijdperk,
- een machine-ID van 3 bytes,
- een 2-byte proces-ID, en
- een 3-byte teller, beginnend met een willekeurige waarde.
Meerdere documenten maken
U kunt meerdere documenten invoegen in een enkele insert()
methode.
In dit voorbeeld voegen we drie documenten in:
db.artists.insert( [ { artistname: "The Kooks" }, { artistname: "Bastille" }, { artistname: "Gang of Four" } ] )
Merk op dat de documenten worden geleverd als een array. De documenten staan tussen vierkante haken []
, en ze worden gescheiden door komma's.
Het uitvoeren van de bovenstaande code resulteert in het volgende bericht:
BulkWriteResult({ "writeErrors" : [ ], "writeConcernErrors" : [ ], "nInserted" : 3, "nUpserted" : 0, "nMatched" : 0, "nModified" : 0, "nRemoved" : 0, "upserted" : [ ] })
Ingesloten documenten
Een document kan andere documenten, arrays en arrays van documenten bevatten.
U kunt ook meerdere naam/waarde-paren in een document opgeven door ze te scheiden met een komma.
db.artists.insert({ artistname : "Deep Purple", albums : [ { album : "Machine Head", year : 1972, genre : "Rock" }, { album : "Stormbringer", year : 1974, genre : "Rock" } ] })
Resultaat:
WriteResult({ "nInserted" : 1 })
Parameters
De insert()
methode accepteert de volgende parameters.
Parameter | Type | Beschrijving |
---|---|---|
document | document of array | Een document of reeks documenten om in de verzameling in te voegen (zoals in de bovenstaande voorbeelden). |
writeConcern | document | Optionele parameter. Dit is een document waarin de schrijfzorg wordt uitgedrukt. Een schrijfprobleem beschrijft het niveau van bevestiging dat is gevraagd van MongoDB voor schrijfbewerkingen naar een zelfstandige mongod of naar replicasets of naar shard-clusters. |
ordered | booleaans | Optionele parameter. Als de waarde is ingesteld op true , zal MongoDB een geordende invoeging van de documenten in de array uitvoeren en als er een fout optreedt met een van de documenten, zal MongoDB terugkeren zonder de resterende documenten in de array te verwerken.
Als de waarde is ingesteld op |
De insertOne()
Methode
U kunt ook de insertOne()
. gebruiken methode om een enkel document in een verzameling in te voegen:
db.musicians.insertOne({ _id: 1, name: "Ian Gillan", instrument: "Vocals" })
Hier hebben we een niet-bestaande verzameling gespecificeerd. Net als bij de insert()
methode, wordt de opgegeven verzameling gemaakt als deze nog niet bestaat.
U zult merken dat de uitvoer anders is dan wanneer u de insert()
. gebruikt methode:
{ "acknowledged" : true, "insertedId" : 1 }
Ingesloten documenten
Net als bij insert()
, kunt u ingesloten documenten en arrays van documenten invoegen:
db.artists.insertOne({ artistname : "Miles Davis", albums : [ { album : "Kind of Blue", year : 1959, genre : "Jazz" }, { album : "Bitches Brew", year : 1970, genre : "Jazz" } ] })
Resultaat:
{ "acknowledged" : true, "insertedId" : ObjectId("578214f048ef8c6b3ffb0159") }
De insertMany()
Methode
Zoals de naam al doet vermoeden, kunt u insertMany()
. gebruiken om meerdere documenten in te voegen:
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 }, ] )
Nogmaals, de uitvoer bij gebruik van insertMany()
is anders dan wanneer u meerdere documenten had ingevoegd met behulp van de insert()
methode:
{ "acknowledged" : true, "insertedIds" : [ 2, 3, 4, 5, 6, 7, 8 ] }
Ingesloten documenten
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" } ] } ])
Resultaat:
{ "acknowledged" : true, "insertedIds" : [ ObjectId("578217c248ef8c6b3ffb015a"), ObjectId("578217c248ef8c6b3ffb015b") ] }