MongoDB tillhandahåller insert()
metod (och två andra) för att lägga till dokument till en databas.
MongoDB tillhandahåller följande tre metoder för att infoga dokument i en databas:
insert()
insertOne()
insertMany()
insert()
Metod
insert()
metoden infogar ett eller flera dokument i en samling. Varje dokument tillhandahålls som en parameter. Samlingens namn läggs till före insert()
metod.
Här är syntaxen för att infoga ett enda dokument:
db.collectionName.insert({ name: "value" })
I exemplet ovan består dokumentet av { name: "value" }
. Detta är ett JSON-dokument. JSON-dokument består av ett eller flera namn/värdepar, omslutna av klammerparenteser {}
.
MongoDB använder JSON-dokument för att lagra data, så det är därför vi infogar dokument i detta format.
Vi har redan använt den här metoden tidigare när vi skapade en databas.
Låt oss lägga till ytterligare ett dokument till vår databas:
db.artists.insert({ artistname: "Jorn Lande" })
Detta infogar ett dokument med { artistname: "Jorn Lande" }
som dess innehåll.
Om vi nu söker efter artister samling kommer vi att se två dokument (inklusive det vi skapade tidigare):
> db.artists.find() { "_id" : ObjectId("5780fbf948ef8c6b3ffb0149"), "artistname" : "The Tea Party" } { "_id" : ObjectId("5781c9ac48ef8c6b3ffb014a"), "artistname" : "Jorn Lande" }
Observera att MongoDB har skapat en _id
fältet för dokumenten. Om du inte anger en, kommer MongoDB att skapa en åt dig. Du kan dock ange detta fält när du infogar om du föredrar att ha kontroll över värdet på _id
fältet.
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 tillhandahåller är ett 12-byte ObjectId-värde. Den består av följande värden;
- ett 4-byte värde som representerar sekunderna sedan Unix-epoken,
- en 3-byte maskinidentifierare,
- ett 2-byte process-id och
- en 3-byte räknare som börjar med ett slumpmässigt värde.
Skapa flera dokument
Du kan infoga flera dokument inom en enda insert()
metod.
I det här exemplet infogar vi tre dokument:
db.artists.insert( [ { artistname: "The Kooks" }, { artistname: "Bastille" }, { artistname: "Gang of Four" } ] )
Observera att dokumenten tillhandahålls som en array. Dokumenten omges av hakparenteser []
, och de är separerade med kommatecken.
Att köra ovanstående kod resulterar i följande meddelande:
BulkWriteResult({ "writeErrors" : [ ], "writeConcernErrors" : [ ], "nInserted" : 3, "nUpserted" : 0, "nMatched" : 0, "nModified" : 0, "nRemoved" : 0, "upserted" : [ ] })
Inbäddade dokument
Ett dokument kan innehålla andra dokument, arrayer och arrayer av dokument.
Du kan också ange flera namn/värdepar i ett dokument genom att separera dem med ett kommatecken.
db.artists.insert({ artistname : "Deep Purple", albums : [ { album : "Machine Head", year : 1972, genre : "Rock" }, { album : "Stormbringer", year : 1974, genre : "Rock" } ] })
Resultat:
WriteResult({ "nInserted" : 1 })
Parametrar
insert()
metoden accepterar följande parametrar.
Parameter | Typ | Beskrivning |
---|---|---|
document | dokument eller array | Ett dokument eller en mängd dokument att infoga i samlingen (som i exemplen ovan). |
writeConcern | dokument | Valfri parameter. Detta är ett dokument som uttrycker oro över skrivandet. Ett skrivproblem beskriver nivån på bekräftelse som begärs från MongoDB för skrivoperationer till en fristående mongod eller till replikuppsättningar eller till fragmenterade kluster. |
ordered | booleskt | Valfri parameter. Om värdet är satt till true , kommer MongoDB att utföra en beställd infogning av dokumenten i arrayen, och om ett fel uppstår med ett av dokumenten kommer MongoDB att returnera utan att bearbeta de återstående dokumenten i arrayen.
Om värdet är satt till |
insertOne()
Metod
Du kan också använda insertOne()
metod för att infoga ett enstaka dokument i en samling:
db.musicians.insertOne({ _id: 1, name: "Ian Gillan", instrument: "Vocals" })
Här har vi specificerat en obefintlig samling. Som med insert()
metoden skapas den angivna samlingen om den inte redan finns.
Du kommer att märka att utdata är annorlunda än när du använder insert()
metod:
{ "acknowledged" : true, "insertedId" : 1 }
Inbäddade dokument
Som med insert()
, kan du infoga inbäddade dokument och arrayer av dokument:
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()
Metod
Som namnet antyder kan du använda insertMany()
för att infoga flera dokument:
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 }, ] )
Återigen, utdata när du använder insertMany()
är annorlunda än om du hade infogat flera dokument med insert()
metod:
{ "acknowledged" : true, "insertedIds" : [ 2, 3, 4, 5, 6, 7, 8 ] }
Inbäddade dokument
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") ] }