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

MongoDB insertMany()

I MongoDB er db.collection.insertMany() metode indsætter flere dokumenter i en samling.

collection del er navnet på den samling, som dokumenterne skal indsættes i.

Eksempel

Her er et eksempel på brug af db.collection.insertMany() at indsætte flere dokumenter i en samling kaldet pets :

db.pets.insertMany([
    { _id: 1, name: "Wag", type: "Dog" },
    { _id: 2, name: "Bark", type: "Dog" },
    { _id: 3, name: "Meow", type: "Cat" }
    ])

Resultat:

{ "acknowledged" : true, "insertedIds" : [ 1, 2, 3 ] } 

db.collection.insertMany() metode returnerer et dokument, der indeholder:

  • En boolesk acknowledged som true hvis operationen kørte med skrivebekymring eller false hvis skriveproblemer var deaktiveret.
  • En matrix af _id værdier for hvert vellykket indsat dokument.

Hvis vi nu bruger db.collection.find() for at se på samlingen, vil vi se de nyligt tilføjede dokumenter.

db.pets.find()

Resultat:

{ "_id" : 1, "name" : "Wag", "type" : "Dog" }
{ "_id" : 2, "name" : "Bark", "type" : "Dog" }
{ "_id" : 3, "name" : "Meow", "type" : "Cat" }

I dette tilfælde er vores tre dokumenter de eneste i samlingen, og derfor blev kun disse dokumenter returneret.

Men hvis samlingen var stor, kunne vi bruge dokument-id'erne til at indsnævre resultatet til kun de dokumenter, vi er interesserede i.

db.pets.find({_id: {$in: [1,2,3]}})

Resultat:

{ "_id" : 1, "name" : "Wag", "type" : "Dog" }
{ "_id" : 2, "name" : "Bark", "type" : "Dog" }
{ "_id" : 3, "name" : "Meow", "type" : "Cat" }

Hvad hvis samlingen ikke eksisterer?

Hvis samlingen ikke eksisterer, oprettes den, og dokumenterne tilføjes til den.

Hvis samlingen allerede eksisterer, føjes dokumenterne blot til den (forudsat deres _id værdier er ikke i konflikt med nogen eksisterende).

Da jeg oprettede dette eksempel, eksisterede samlingen ikke, så indsættelsesoperationen skabte den.

_id Felt

_id felt er et unikt identifikationsfelt i MongoDB.

Som vist i det foregående eksempel kan du angive dit eget _id felt i dokumentet. Hvis du gør det, skal dens værdi være unik i samlingen. Dette er fordi dit _id feltet vil blive brugt som den unikke identifikator for dokumentet.

Her er et eksempel på indsættelse af dokumenter uden at angive _id felter.

db.pets.insertMany([
    { name: "Bruce", type: "Bat" },
    { name: "Sweetie", type: "Honey Badger" }
    ])

Resultat:

{
	"acknowledged" : true,
	"insertedIds" : [
		ObjectId("5fe30ef737b49e0faf1af215"),
		ObjectId("5fe30ef737b49e0faf1af216")
	]
}

_id værdierne af dokumenterne returneres. Vi kunne bruge disse til at søge i samlingen efter kun de dokumenter, vi indsatte.

Men i dette tilfælde, lad os se på hele samlingen.

db.pets.find()

Resultat:

{ "_id" : 1, "name" : "Wag", "type" : "Dog" }
{ "_id" : 2, "name" : "Bark", "type" : "Dog" }
{ "_id" : 3, "name" : "Meow", "type" : "Cat" }
{ "_id" : ObjectId("5fe30ef737b49e0faf1af215"), "name" : "Bruce", "type" : "Bat" }
{ "_id" : ObjectId("5fe30ef737b49e0faf1af216"), "name" : "Sweetie", "type" : "Honey Badger" }

Vi kan se, at vores to nye dokumenter er med i samlingen.

Den ordered Parameter

db.collection.insertMany() metode accepterer også en ordered parameter. Dette er en boolesk parameter med standardværdien true .

Den ordered parameter angiver, om indsættelsesoperationen skal bestilles eller ikke.

Hvis ordered er indstillet til false , dokumenter indsættes i et uordnet format og kan omarrangeres af mongod for at øge ydeevnen.

Med bestilte indstik, hvis der opstår en fejl under en indsættelse af et af dokumenterne, returnerer MongoDB ved fejl uden at behandle de resterende dokumenter i arrayet.

Med uordnede indsættelser, hvis der opstår en fejl under en indsættelse af et af dokumenterne, fortsætter MongoDB med at indsætte de resterende dokumenter i arrayet.

Flere oplysninger

db.collection.insertMany() metode accepterer også en writeConcern argument, som beskriver niveauet af bekræftelse, der anmodes om fra MongoDB for skriveoperationer.

Se MongoDB-dokumentationen for db.collection.insertMany() for mere information.


  1. Hvordan udløber man HSET underordnet nøgle i redis?

  2. Meteor-app — nulstilling af en implementeret apps DB

  3. Forbind NodeJS til MongoDB Droplet

  4. Hvordan implementerer man has_many :gennem relationer med Mongoid og mongodb?