MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Quelle est la différence entre les méthodes insert(), insertOne() et insertMany() ?

Quelle est la différence entre les méthodes insert(), insertOne() et insertMany() sur MongoDB

  • db.collection.insert() comme mentionné dans la documentation, insère un ou plusieurs documents dans une collection et renvoie un objet WriteResult pour les insertions uniques et un objet BulkWriteResult pour les insertions en masse.

    > 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() comme mentionné dans la documentation insère un document dans une collection et renvoie un document qui ressemble à ceci :

    > var document = db.collection.insertOne({"a": 3})
    > document
    {
            "acknowledged" : true,
            "insertedId" : ObjectId("571a218011a82a1d94c02333")
    }
    
  • db.collection.insertMany() insère plusieurs documents dans une collection et renvoie un document qui ressemble à ceci :

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

Dans quelle situation dois-je les utiliser ?

Le insert() la méthode est obsolète dans le pilote majeur, vous devez donc utiliser le .insertOne() chaque fois que vous souhaitez insérer un seul document dans votre collection et la méthode .insertMany lorsque vous souhaitez insérer plusieurs documents dans votre collection. Bien sûr, cela n'est pas mentionné dans la documentation, mais le fait est que personne n'écrit vraiment une application dans le shell. La même chose s'applique à updateOne , updateMany , deleteOne , deleteMany , findOneAndDelete , findOneAndUpdate et findOneAndReplace . Voir Présentation des opérations d'écriture.