Wat is het verschil tussen de methode insert(), insertOne() en insertMany()?

Wat is het verschil tussen de methoden insert(), insertOne()en insertMany()op MongoDB. In welke situatie moet ik ze allemaal gebruiken?

Ik heb de documenten gelezen, maar het is niet duidelijk wanneer ik ze allemaal moet gebruiken.


Antwoord 1, autoriteit 100%

Wat is het verschil tussen de methoden insert(), insertOne() en insertMany() op MongoDB

  • db.collection.insert()zoals vermeld in de documentatie voegt een document of documenten toe aan een verzameling en retourneert
    een WriteResultobject voor enkele inserts en een BulkWriteResultobject voor bulkinvoegingen.

    > var d = db.collection.insert({"b": 3})
    > d
    WriteResult({ "nInserted" : 1 })
    > var d2 = db.collection.insert([{"b": 3}, {'c': 4}])
    > d2
    BulkWriteResult({
            "writeErrors" : [ ],
            "writeConcernErrors" : [ ],
            "nInserted" : 2,
            "nUpserted" : 0,
            "nMatched" : 0,
            "nModified" : 0,
            "nRemoved" : 0,
            "upserted" : [ ]
    })
    
  • db.collection.insertOne()zoals vermeld in de documentatie voegt een document in een verzameling in en retourneert een document dat er als volgt uitziet:

    > var document = db.collection.insertOne({"a": 3})
    > document
    {
            "acknowledged" : true,
            "insertedId" : ObjectId("571a218011a82a1d94c02333")
    }
    
  • db.collection.insertMany()voegt meerdere documenten in een verzameling in en retourneert een document dat er als volgt uitziet:

    > var res = db.collection.insertMany([{"b": 3}, {'c': 4}])
    > res
    {
            "acknowledged" : true,
            "insertedIds" : [
                    ObjectId("571a22a911a82a1d94c02337"),
                    ObjectId("571a22a911a82a1d94c02338")
            ]
    }
    

In welke situatie moet ik ze allemaal gebruiken?

De methode insert()is verouderd in het hoofdstuurprogramma, dus u moet de . gebruiken
de methode .insertOne()wanneer u een enkel document in uw verzameling wilt invoegen en de .insertManymethode wanneer u meerdere documenten in uw verzameling wilt invoegen. Natuurlijk wordt dit niet vermeld in de documentatie, maar feit is dat niemand echt een applicatie in de shell schrijft. Hetzelfde geldt voor updateOne, updateMany, deleteOne, deleteMany, findOneAndDelete, findOneAndUpdateen findOneAndReplace. Zie Overzicht schrijfbewerkingen.


Antwoord 2, autoriteit 12%

  1. db.collection.insert():

    Hiermee kunt u een of meer documenten in de verzameling invoegen. Syntaxis:

    • Enkele invoeging: db.collection.insert({<document>});
    • Meerdere invoegingen:

      db.collection.insert([
      , , …
      ]);

    Retourneert een WriteResult-object: WriteResult({ "nInserted" : 1 });

  2. db.collection.insertOne():

    Hiermee kunt u precies 1 document in de verzameling invoegen. De syntaxis is dezelfde als die van een enkele insert in insert().

    Retourneert het volgende document:

    {
       "acknowledged" : true,
       "insertedId" : ObjectId("56fc40f9d735c28df206d078")
    }
    
  3. db.collection.insertMany():

    Hiermee kunt u een reeks documenten in de verzameling invoegen. Syntaxis:

    db.collection.insertMany(
        { [ <document 1> , <document 2>, ... ] });
    

    Retourneert het volgende document:

    {
       "acknowledged" : true,
       "insertedIds" : [
          ObjectId("562a94d381cb9f1cd6eb0e1a"),
          ObjectId("562a94d381cb9f1cd6eb0e1b"),
          ObjectId("562a94d381cb9f1cd6eb0e1c")
       ]
    }
    

Met deze drie kun je ook een aangepaste writeConcerndefiniëren en ook een verzameling maken als deze niet bestaat.


Antwoord 3, autoriteit 9%

Er is ook een verschil in foutafhandeling, kijk op hier. De opdracht insert retourneert een document in zowel succes- als foutgevallen. Maar de commando’s insertOne en insertMany gooienuitzonderingen. Uitzonderingen zijn gemakkelijker te verwerken in code dan het evalueren van het geretourneerde document om fouten op te sporen. Waarschijnlijk de reden waarom ze worden afgekeurd in de stuurprogramma’s, zoals vermeld in het antwoord van sstyvane.


Antwoord 4

Ook om toe te voegen aan een ander antwoord, als de gebruiker de functie InsertOne aanroept in plaats van InsertMany en de reeks documenten doorgeeft die moeten worden ingevoegd. dan is het ook toegestaan ​​en geeft het geen fouten. Het zal slechts één document maken dat een reeks van deze documenten zal hebben. dus wees voorzichtig.


Antwoord 5

Als de verzameling niet bestaat, maakt de methode insertOne() de verzameling aan. Als u dezelfde gegevens opnieuw invoert, maakt mongod een andere unieke id om duplicatie te voorkomen.

Other episodes