sql >> Database teknologi >  >> NoSQL >> MongoDB

MongoDB - Opret et dokument

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 false , vil MongoDB udføre en uordnet indsættelse, og hvis der opstår en fejl med et af dokumenterne, vil de resterende dokumenter i arrayet fortsætte med at blive behandlet.

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

  1. MongoDB/NoSQL:Bevar dokumentændringshistorik

  2. Hvordan søger du efter nøgler med en værdi? Få for eksempel alle NØGLER, hvor værdien er en eller anden værdi

  3. Hvornår skal du Redis? Hvornår skal MongoDB?

  4. Redis-taster vises ikke, mens du bruger Cache-facade i Laravel