sql >> Database >  >> NoSQL >> MongoDB

MongoDB - Een document maken

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 false , zal MongoDB een ongeordende invoeging uitvoeren en als er een fout optreedt met een van de documenten, worden de resterende documenten in de array verder verwerkt.

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

  1. Sockets delen via afzonderlijke nodeJS-instanties

  2. Zoeken in dubbel geneste array MongoDB

  3. Go JSON-decodering is erg traag. Wat zou een betere manier zijn om het te doen?

  4. Ondersteunt de mongocli een formule-URL voor Apple M1-chips?