sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB - Skapa ett dokument

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 false , kommer MongoDB att utföra en oordnad infogning, och om ett fel uppstår med ett av dokumenten kommer de återstående dokumenten i arrayen att fortsätta att bearbetas.

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")
	]
}

  1. Skillnader mellan Microsoft.Extensions.Cashing.Redis och Microsoft.Extensions.Caching.StackExchangeRedis.RedisCache

  2. mongoError:Topologin förstördes

  3. Kan mongodb användas som en inbäddad databas?

  4. MongoDB $rtrim