sql >> Database >  >> NoSQL >> MongoDB

MongoDB invoegen()

In MongoDB de db.collection.insert() methode voegt een document of documenten in een verzameling in.

De collection part is de naam van de verzameling waarin u het document/de documenten wilt invoegen.

Voorbeeld

Hier is een voorbeeld van het gebruik van db.collection.insert() om meerdere documenten in te voegen in een verzameling genaamd pets :

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

Resultaat:

BulkWriteResult({
	"writeErrors" : [ ],
	"writeConcernErrors" : [ ],
	"nInserted" : 3,
	"nUpserted" : 0,
	"nMatched" : 0,
	"nModified" : 0,
	"nRemoved" : 0,
	"upserted" : [ ]
})

De db.collection.insert() methode retourneert een object dat de status van de invoegbewerking bevat.

Het geretourneerde object hangt af van of een enkel document is ingevoegd of meerdere documenten.

  • Wanneer een enkel document wordt ingevoegd, retourneert het een WriteResult voorwerp.
  • Als een array van documenten wordt ingevoegd, wordt een BulkWriteResult geretourneerd voorwerp.

We kunnen zien dat het bovenstaande voorbeeld een BulkWriteResult . heeft geretourneerd voorwerp. Dit komt omdat we een reeks documenten hebben toegevoegd. Het zou dit gedaan hebben, zelfs als de array slechts één element bevatte.

Als we nu db.collection.find() . gebruiken om de collectie te bekijken, zullen we de nieuw toegevoegde documenten zien.

db.pets.find()

Resultaat:

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

In dit geval zijn onze drie documenten de enige in de collectie, en dus zijn alleen deze documenten geretourneerd.

Als de verzameling echter groot was, zouden we de document-ID's kunnen gebruiken om het resultaat te beperken tot alleen de documenten waarin we geïnteresseerd zijn.

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

Resultaat:

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

Wat als de collectie niet bestaat?

Als de verzameling niet bestaat, wordt deze gemaakt en worden de documenten eraan toegevoegd.

Als de verzameling al bestaat, worden de documenten er gewoon aan toegevoegd (mits hun _id waarden zijn niet in strijd met bestaande).

Toen ik dit voorbeeld maakte, bestond de verzameling niet, en daarom heeft de invoegbewerking deze gemaakt.

De _id Veld

De _id field is een uniek identificatieveld in MongoDB.

Zoals aangetoond in het vorige voorbeeld, kunt u uw eigen _id . opgeven veld in het document. Als je dat doet, moet de waarde ervan uniek zijn binnen de collectie. Dit komt omdat uw _id veld wordt gebruikt als de unieke identificatie van het document.

Hier is een voorbeeld van het invoegen van een document zonder de _id velden.

db.pets.insert(
    { name: "Bruce", type: "Bat" }
    )

Resultaat:

WriteResult({ "nInserted" : 1 })

Merk op dat in dit geval de methode een WriteResult . retourneert object in plaats van een BulkWriteResult voorwerp. Dit komt omdat we een enkel document hebben ingevoegd (en het stond niet in een array).

Laten we nu nog eens naar de collectie kijken.

db.pets.find()

Resultaat:

{ "_id" : 1, "name" : "Wag", "type" : "Dog" }
{ "_id" : 2, "name" : "Bark", "type" : "Dog" }
{ "_id" : 3, "name" : "Meow", "type" : "Cat" }
{ "_id" : ObjectId("5fe323d837b49e0faf1af218"), "name" : "Bruce", "type" : "Bat" }

We kunnen zien dat ons nieuwe document is opgenomen in de collectie, en het heeft een _id veld met een automatisch gegenereerde waarde.

De ordered Parameter

De db.collection.insert() methode accepteert ook een ordered parameter. Dit is een booleaanse parameter met een standaardwaarde van true .

De ordered parameter specificeert of de invoegbewerking moet worden besteld of ongeordend.

Indien ordered is ingesteld op false , documenten worden in een ongeordend formaat ingevoegd en kunnen opnieuw worden gerangschikt door mongod om de prestaties te verbeteren.

Bij bestelde invoegingen, als er een fout optreedt tijdens een invoeging van een van de documenten, geeft MongoDB een fout terug zonder de resterende documenten in de array te verwerken.

Als er bij ongeordende invoegingen een fout optreedt tijdens het invoegen van een van de documenten, gaat MongoDB door met het invoegen van de overige documenten in de array.

Meer informatie

De db.collection.insert() methode accepteert ook een writeConcern argument, dat het niveau van bevestiging beschrijft dat van MongoDB is gevraagd voor schrijfbewerkingen.

Zie de MongoDB-documentatie voor db.collection.insert() voor meer informatie.


  1. wacht tot alle beloften eindigen in nodejs met bluebird

  2. Extra potten doorgeven aan Spark via spark-submit

  3. Inleiding tot Redis-gegevensstructuren:bitmaps

  4. MongoDB $anyElementTrue