ordered node many insertmany insert_many false ejemplo mongodb mongodb-query nosql

mongodb - node - ¿Cuál es la diferencia entre el método insert(), insertOne() y insertMany()?



pymongo insert_many ignore duplicates (4)

¿Cuál es la diferencia entre los métodos insert (), insertOne () y insertMany () en MongoDB?

  • db.collection.insert() como se menciona en la documentación inserta un documento o documentos en una colección y devuelve un objeto WriteResult para inserciones individuales y un objeto BulkWriteResult para inserciones masivas.

    > 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() como se menciona en la documentación inserta un documento en una colección y devuelve un documento que se parece a esto:

    > var document = db.collection.insertOne({"a": 3}) > document { "acknowledged" : true, "insertedId" : ObjectId("571a218011a82a1d94c02333") }

  • db.collection.insertMany() inserta varios documentos en una colección y devuelve un documento que se ve así:

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

¿En qué situación debo usar cada uno?

El método insert() está en desuso en el controlador principal, por lo que debe usar el método .insertOne() siempre que quiera insertar un solo documento en su colección y el .insertMany cuando desee insertar varios documentos en su colección. Por supuesto, esto no se menciona en la documentación, pero el hecho es que nadie realmente escribe una aplicación en el shell. Lo mismo se aplica a updateOne , updateMany , deleteOne , deleteMany , findOneAndDelete , findOneAndUpdate y findOneAndReplace . Ver Resumen de operaciones de escritura .

¿Cuál es la diferencia entre los métodos insert() , insertOne() y insertMany() en MongoDB? ¿En qué situación debo usar cada uno?

Leí los documentos, pero no está claro cuándo usar cada uno.


  1. db.collection.insert() :

    Le permite insertar uno o más documentos en la colección. Sintaxis:

    • db.collection.insert({<document>}); única: db.collection.insert({<document>});
    • Inserción múltiple:

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

    Devuelve un objeto WriteResult : WriteResult({ "nInserted" : 1 });

  2. db.collection.insertOne() :

    Te permite insertar exactamente 1 documento en la colección. Su sintaxis es la misma que la de un solo inserto en insert() .

    Devuelve el siguiente documento:

    { "acknowledged" : true, "insertedId" : ObjectId("56fc40f9d735c28df206d078") }

  3. db.collection.insertMany() :

    Le permite insertar una matriz de documentos en la colección. Sintaxis:

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

    Devuelve el siguiente documento:

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

Los tres de estos también le permiten definir un writeConcern personalizado y también crear una colección si no existe.


Si la colección no existe, entonces el método insertOne () crea la colección. Si ingresa los mismos datos nuevamente, mongod creará otra identificación única para evitar la duplicación.


También hay una diferencia en el manejo de errores, verifique here . El comando de inserción devuelve un documento tanto en casos de éxito como de error. Pero los comandos insertOne e insertMany generan excepciones. Las excepciones son más fáciles de manejar en el código, que evaluar el documento devuelto para descubrir errores. Probablemente la razón por la que están en desuso en los controladores como se menciona en la respuesta de sstyvane.