MongoDB Array av objekt som använder insert() med Exempel

⚡ Smart sammanfattning

MongoDB En array av objekt med hjälp av insert() visar hur man lägger till flera dokument i en samling i en enda operation. Den lagrar en array av medarbetarregister, bäddar in arrayer i ett dokument och visar resultaten snyggt med hjälp av JSON-utskriftsfunktionen.

  • 📥 Massinsats: Metoden insert() lägger till en array av dokument till en samling i en enda, effektiv operation.
  • 🧾 Dokumentmodell: Varje dokument är en uppsättning fält-och-värde-par, och MongoDB lägger till ett unikt _id automatiskt.
  • 🗂️ Inbäddade arrayer: En array kan också finnas som ett fält inuti ett dokument, keeping relaterade värden tillsammans.
  • 🔁 Moderna metoder: insertOne() och insertMany() är de nuvarande, tydligare ersättarna för den äldre insert()-metoden.
  • 🖨️ Readable Produktion: Kommandot forEach(printjson) skriver ut alla dokument i ett rent och lättläst JSON-format.

Vad är insert()-metoden i MongoDB?

Metoden insert() i MongoDB lägger till ett eller flera dokument i en samling. Ett dokument är en uppsättning fält-och-värde-par som lagras i BSON, en binär form av JSON. När du skickar ett enskilt dokument lagrar insert() den posten; när du skickar en array av dokument lagras alla i en enda operation, vilket är snabbare än att infoga dem ett i taget.

Metoden körs mot en specifik samling med hjälp av mönstret db.collection.insert(). Om målsamlingen inte redan finns, MongoDB skapar den automatiskt vid första infogningen. Varje dokument får också ett unikt _id-fält om du inte anger ett, så att varje post kan identifieras senare.

Även om insert() fortfarande fungerar, nyare MongoDB versioner tillhandahåller insertOne() och insertMany() som tydligare ersättningar. Exemplen nedan använder insert() för att lägga till en array av medarbetardokument och sedan visa resultaten i ett läsbart JSON-format.

Lägga till en matris med dokument

Kommandot "insert" kan också användas för att infoga flera dokument i en samling samtidigt. Kodexemplet nedan kan användas för att infoga flera dokument samtidigt.

Följande exempel visar hur detta kan göras,

Steg 1) Skapa en JavaScript variabel som kallas myEmployee för att hålla mängden dokument

Steg 2) Lägg till de obligatoriska dokumenten med fältnamnet och värden till variabeln

Steg 3) Använd kommandot infoga för att infoga mängden dokument i samlingen

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

	db.Employee.insert(myEmployee);

Om kommandot utförs framgångsrikt kommer följande utdata att visas

MongoDB Array av objekt som använder insert()

Resultatet visar att dessa tre dokument lades till samlingen.

Så här infogar du en array i ett dokument

Förutom att infoga en rad separata dokument, MongoDB låter dig lagra en array som ett fält i ett enda dokument. Detta är användbart när en post naturligt innehåller en lista med värden, till exempel en anställd som har flera färdigheter eller en student som är inskriven i flera kurser. Eftersom MongoDB använder en flexibel dokumentmodell, arrayen finns direkt inuti objektet snarare än i en separat tabell, vilket håller ihop relaterad data.

Följande exempel infogar ett medarbetardokument som innehåller ett arrayfält som heter Färdigheter:

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

Delarna i detta dokument fungerar enligt följande:

  • Anställd-ID och Anställd Namn är vanliga fält-och-värde-par.
  • färdigheter är ett arrayfält som innehåller tre strängvärden inom hakparenteser.
  • Hela dokumentet, inklusive den inbäddade arrayen, lagras i en enda infogningsoperation.

Efter att du har lagt till posten kan du bekräfta den inbäddade arrayen med en find-fråga som skriver ut resultatet i JSON:

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

Utdata visar kompetensmatrisen kapslad i medarbetardokumentet. Later, kan du lägga till nya värden i arrayen med operatorn $push, eller läsa ett enskilt element efter dess indexposition. Att lagra kopplade värden på det här sättet håller varje dokument fristående, minskar behovet av kopplingar mellan samlingar och gör data enklare att läsa och underhålla.

insert() kontra insertOne() kontra insertMany()

MongoDB tillhandahåller tre relaterade metoder för att lägga till data. Tabellen nedan jämför dem så att du kan välja rätt:

Metod Syfte Exempelvis
Föra in() Äldre metod som lägger till ett enskilt dokument eller en matris med dokument. Den fungerar fortfarande men är föråldrad i nyare drivrutiner. db.Medarbetare.insert(minMedarbetare)
insertOne() Lägger till exakt ett dokument och returnerar dess infogade _id. Föredras för enskilda poster. db.Employee.infogaEn({ … })
insertMany() Lägger till en array av dokument i ett anrop och returnerar alla infogade _ids. Föredras för bulkinfogningar. db.Employee.insertMany([ { … }, { … } ])

För nya projekt, använd insertOne() och insertMany() eftersom de ger tydligare avsikt och bättre felrapportering. Metoden insert() är fortfarande tillgänglig främst för bakåtkompatibilitet med äldre handledningar och skript.

Utskrift i JSON-format

JSON är ett format som kallas JavaSkriptobjektnotation, och är bara ett sätt att lagra information på ett organiserat, lättläst sätt. I våra ytterligare exempel kommer vi att använda JSON-utskriftsfunktionen för att se utdata i ett bättre format.

Låt oss titta på ett exempel på utskrift i JSON-format

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

Code Förklaring:

  1. Den första ändringen är att lägga till funktionen forEach() i find()-funktionen. Detta säkerställer att varje dokument i samlingen går igenom explicit. På så sätt har du mer kontroll över vad du kan göra med vart och ett av dokumenten i samlingen.
  2. Den andra ändringen är att lägga kommandot printjson till forEach-satsen. Detta gör att varje dokument i samlingen visas i JSON-format.

Om kommandot utförs framgångsrikt kommer följande utdata att visas

Produktion:

Utskrift i JSON-format

Utdata visar tydligt att alla dokument är utskrivna i JSON-stil.

Vanliga frågor

Ja. Att skicka en array av dokument till insert() lägger till dem alla i en operation. Denna massinfogning är snabbare än att anropa insert() separat för varje dokument, även om insertMany() nu är den föredragna metoden.

Ja. Om ett dokument inte innehåller ett _id-fält, MongoDB genererar automatiskt ett unikt ObjectId för den under infogning, så att varje lagrad post kan identifieras och hämtas senare.

Som standard MongoDB utför en ordnad infogning. Den lägger till dokument i den angivna ordningen och stannar vid det första felet, vilket lämnar de återstående dokumenten oinfogade. Om ordnad sätts till falskt fortsätter tidigare fel.

Ja. AI-verktyg kan omvandla en enkel beskrivning av dina data till insertOne()- eller insertMany()-satser, inklusive inbäddade arrayer. Granska alltid de genererade fälten och datatyperna innan du kör dem på en databas.

AI kan föreslå om arrayer ska bäddas in i ett dokument eller refereras till separata samlingar, baserat på dina frågemönster. Detta hjälper nybörjare att modellera data effektivt samtidigt som onödig dubbelarbete eller alltför djup kapsling undviks.

Sammanfatta detta inlägg med: