MongoDB Array van objecten met behulp van insert() met voorbeeld

โšก Slimme samenvatting

MongoDB Het voorbeeld 'Array of Objects using insert()' laat zien hoe je meerdere documenten in รฉรฉn bewerking aan een collectie kunt toevoegen. Het slaat een array met werknemersgegevens op, voegt arrays in een document in en geeft de resultaten overzichtelijk weer met behulp van de JSON print-functie.

  • ๐Ÿ“ฅ Bulk-inzetstuk: De insert()-methode voegt een array van documenten toe aan een collectie in รฉรฉn efficiรซnte bewerking.
  • ๐Ÿงพ Documentmodel: Elk document is een verzameling van veld-waardeparen, en MongoDB Voegt automatisch een unieke _id toe.
  • ๐Ÿ—‚๏ธ Ingesloten arrays: Een array kan ook als veld binnen รฉรฉn document voorkomen, keeping verwante waarden met elkaar.
  • ๐Ÿ” Moderne methoden: insertOne() en insertMany() zijn de huidige, duidelijkere vervangingen voor de oude insert()-methode.
  • ๐Ÿ–จ๏ธ Readable Output: De opdracht forEach(printjson) print elk document in een overzichtelijk en gemakkelijk leesbaar JSON-formaat.

Wat is de insert() methode in MongoDB?

De insert() methode in MongoDB Voegt een of meer documenten toe aan een verzameling. Een document is een set van veld-waardeparen die zijn opgeslagen in BSON, een binaire vorm van JSON. Wanneer je een enkel document doorgeeft, slaat de functie `insert()` dat ene record op; wanneer je een array van documenten doorgeeft, worden ze allemaal in รฉรฉn bewerking opgeslagen, wat sneller is dan ze รฉรฉn voor รฉรฉn in te voegen.

De methode wordt uitgevoerd op een specifieke verzameling met behulp van het patroon db.collection.insert(). Als de doelverzameling nog niet bestaat, MongoDB Dit wordt automatisch aangemaakt tijdens de eerste invoeging. Elk document krijgt ook een uniek _id-veld als u er geen opgeeft, zodat elk record later kan worden geรฏdentificeerd.

Hoewel insert() nog steeds werkt, zijn nieuwere MongoDB Versies bieden insertOne() en insertMany() als duidelijkere alternatieven. De onderstaande voorbeelden gebruiken insert() om een โ€‹โ€‹array met werknemersdocumenten toe te voegen en de resultaten vervolgens in een leesbaar JSON-formaat weer te geven.

Een array van documenten toevoegen

Het commando โ€œinsertโ€ kan ook worden gebruikt om meerdere documenten tegelijk in een verzameling in te voegen. Het onderstaande codevoorbeeld kan worden gebruikt om meerdere documenten tegelijk in te voegen.

Het volgende voorbeeld laat zien hoe dit gedaan kan worden:

Stap 1) Maak een JavaScript variabele genaamd myEmployee om de reeks documenten vast te houden

Stap 2) Voeg de vereiste documenten met de veldnaam en waarden toe aan de variabele

Stap 3) Gebruik de opdracht invoegen om de reeks documenten in de verzameling in te voegen

var myEmployee=
	[
		{
			"Employeeid" : 1,
			"EmployeeName" : "Smith"
		},
		{
			"Employeeid"   : 2,
			"EmployeeName" : "Mohan"
		},
		{
			"Employeeid"   : 3,
			"EmployeeName" : "Joe"
		},
	];

	db.Employee.insert(myEmployee);

Als de opdracht succesvol is uitgevoerd, wordt de volgende uitvoer weergegeven

MongoDB Array van objecten met behulp van insert()

Uit de uitvoer blijkt dat deze drie documenten aan de collectie zijn toegevoegd.

Hoe voeg je een array in een document in?

Naast het invoegen van een reeks afzonderlijke documenten, MongoDB Hiermee kun je een array opslaan als een veld binnen รฉรฉn document. Dit is handig wanneer een record van nature een lijst met waarden bevat, zoals een werknemer met meerdere vaardigheden of een student die is ingeschreven voor meerdere cursussen. Omdat MongoDB Het maakt gebruik van een flexibel documentmodel, waarbij de array zich direct in het object bevindt in plaats van in een aparte tabel, waardoor gerelateerde gegevens bij elkaar blijven.

Het volgende voorbeeld voegt een werknemersdocument in dat een arrayveld met de naam 'Vaardigheden' bevat:

db.Employee.insert(
   {
      "Employeeid" : 4,
      "EmployeeName" : "Alan",
      "Skills" : [ "MongoDB", "Node.js", "Express" ]
   }
);

De onderdelen van dit document werken als volgt:

  • Werknemers-ID en Medewerkernaam zijn gewone veld-waardeparen.
  • Skills is een arrayveld dat drie tekenreekswaarden tussen vierkante haken bevat.
  • Het volledige document, inclusief de ingebedde array, wordt in รฉรฉn enkele invoegbewerking opgeslagen.

Nadat je de record hebt toegevoegd, kun je de ingesloten array controleren met een zoekopdracht die het resultaat in JSON afdrukt:

db.Employee.find( { "Employeeid" : 4 } ).forEach(printjson)

De uitvoer toont de array 'Skills' genest in het werknemersdocument. LaterJe kunt nieuwe waarden aan de array toevoegen met de `$push` operator, of een enkel element lezen via de indexpositie. Door gekoppelde waarden op deze manier op te slaan, blijft elk document op zichzelf staan, is het minder nodig om collecties samen te voegen en zijn de gegevens gemakkelijker te lezen en te onderhouden.

insert() vs insertOne() vs insertMany()

MongoDB Biedt drie verwante methoden voor het toevoegen van gegevens. De onderstaande tabel vergelijkt ze, zodat u de juiste kunt kiezen:

Methode Doel Voorbeeld
invoegen () Verouderde methode voor het toevoegen van een enkel document of een reeks documenten. Deze methode werkt nog steeds, maar wordt in nieuwere stuurprogramma's niet meer ondersteund. db.Employee.insert(myEmployee)
insertOne() Voegt precies รฉรฉn document toe en retourneert de bijbehorende _id. Bij voorkeur voor afzonderlijke records. db.Employee.insertOne({ โ€ฆ })
insertMany() Voegt een reeks documenten in รฉรฉn keer toe en retourneert alle ingevoegde _ids. Aanbevolen voor bulk-invoegingen. db.Employee.insertMany([ { โ€ฆ }, { โ€ฆ } ])

Gebruik voor nieuwe projecten insertOne() en insertMany(), omdat deze methoden een duidelijkere intentie en betere foutrapportage bieden. De insert()-methode blijft voornamelijk beschikbaar voor compatibiliteit met oudere tutorials en scripts.

Afdrukken in JSON-formaat

JSON is een formaat genaamd JavaNotatie van scriptobjecten, en is slechts een manier om informatie op een georganiseerde, gemakkelijk leesbare manier op te slaan. In onze verdere voorbeelden gaan we de JSON-afdrukfunctionaliteit gebruiken om de uitvoer in een beter formaat te bekijken.

Laten we een voorbeeld bekijken van afdrukken in JSON-indeling

db.Employee.find().forEach(printjson)

Code Uitleg:

  1. De eerste wijziging is het toevoegen van de functie `forEach()` aan de `find()`-functie. Hierdoor wordt ervoor gezorgd dat elk document in de collectie expliciet wordt doorlopen. Op deze manier heb je meer controle over wat je met elk document in de collectie kunt doen.
  2. De tweede wijziging is om de printjson-opdracht in de forEach-statement te plaatsen. Dit zorgt ervoor dat elk document in de collectie in JSON-formaat wordt weergegeven.

Als de opdracht succesvol is uitgevoerd, wordt de volgende uitvoer weergegeven

Output:

Afdrukken in JSON-formaat

Uit de uitvoer blijkt duidelijk dat alle documenten in JSON-stijl zijn afgedrukt.

Veelgestelde vragen

Ja. Door een array met documenten aan `insert()` door te geven, worden ze allemaal in รฉรฉn bewerking toegevoegd. Deze bulkinsert is sneller dan `insert()` afzonderlijk voor elk document aan te roepen, hoewel `insertMany()` tegenwoordig de voorkeur geniet.

Ja. Als een document geen _id-veld bevat, MongoDB Genereert automatisch een unieke ObjectId tijdens het invoegen, zodat elk opgeslagen record later kan worden geรฏdentificeerd en opgehaald.

Standaard MongoDB Voert een geordende invoeging uit. Het voegt documenten toe in de opgegeven volgorde en stopt bij de eerste fout, waardoor de resterende documenten niet worden ingevoegd. Als u 'ordered' op 'false' instelt, wordt het proces na fouten voortgezet.

Ja. AI-tools kunnen een beschrijving van uw gegevens in gewone taal omzetten in insertOne() of insertMany() instructies, inclusief ingebedde arrays. Controleer altijd de gegenereerde velden en gegevenstypen voordat u ze op een database uitvoert.

AI kan, op basis van je querypatronen, suggesties doen of je arrays in een document moet insluiten of naar afzonderlijke collecties moet verwijzen. Dit helpt beginners om data efficiรซnt te modelleren en onnodige duplicatie of te diepe nesting te voorkomen.

Vat dit bericht samen met: