MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Was ist der Unterschied zwischen den Methoden insert(), insertOne() und insertMany()?

Was ist der Unterschied zwischen den Methoden insert(), insertOne() und insertMany() in MongoDB

  • db.collection.insert() wie in der Dokumentation erwähnt, fügt ein Dokument oder Dokumente in eine Sammlung ein und gibt ein WriteResult-Objekt für einzelne Einfügungen und ein BulkWriteResult-Objekt für Masseneinfügungen zurück.

    > 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() wie in der Dokumentation erwähnt, fügt ein Dokument in eine Sammlung ein und gibt ein Dokument zurück, das so aussieht:

    > var document = db.collection.insertOne({"a": 3})
    > document
    {
            "acknowledged" : true,
            "insertedId" : ObjectId("571a218011a82a1d94c02333")
    }
    
  • db.collection.insertMany() fügt mehrere Dokumente in eine Sammlung ein und gibt ein Dokument zurück, das wie folgt aussieht:

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

In welcher Situation sollte ich sie verwenden?

Das insert() -Methode ist im Haupttreiber veraltet, daher sollten Sie den .insertOne() verwenden -Methode, wenn Sie ein einzelnes Dokument in Ihre Sammlung einfügen möchten, und die .insertMany wenn Sie mehrere Dokumente in Ihre Sammlung einfügen möchten. Natürlich wird dies in der Dokumentation nicht erwähnt, aber Tatsache ist, dass niemand wirklich eine Anwendung in der Shell schreibt. Dasselbe gilt für updateOne , updateMany , deleteOne , deleteMany , findOneAndDelete , findOneAndUpdate und findOneAndReplace . Siehe Übersicht über Schreibvorgänge.