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

Qual è la differenza tra il metodo insert(), insertOne() e insertMany()?

Qual è la differenza tra i metodi insert(), insertOne() e insertMany() su MongoDB

  • db.collection.insert() come menzionato nella documentazione inserisce uno o più documenti in una raccolta e restituisce un oggetto WriteResult per gli inserimenti singoli e un oggetto BulkWriteResult per gli inserimenti in blocco.

    > 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() come indicato nella documentazione inserisce un documento in una collezione e restituisce un documento che assomiglia a questo:

    > var document = db.collection.insertOne({"a": 3})
    > document
    {
            "acknowledged" : true,
            "insertedId" : ObjectId("571a218011a82a1d94c02333")
    }
    
  • db.collection.insertMany() inserisce più documenti in una raccolta e restituisce un documento simile al seguente:

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

In quale situazione dovrei usarli?

Il insert() il metodo è deprecato nel driver principale, quindi dovresti usare il .insertOne() ogni volta che vuoi inserire un singolo documento nella tua collezione e il .insertMany quando vuoi inserire più documenti nella tua collezione. Ovviamente questo non è menzionato nella documentazione, ma il fatto è che nessuno scrive davvero un'applicazione nella shell. La stessa cosa vale per updateOne , updateMany , deleteOne , deleteMany , findOneAndDelete , findOneAndUpdate e findOneAndReplace . Vedere Panoramica delle operazioni di scrittura.