Insertar en Masa en MongoDB – insertMany de MongoDB

Vamos a ver la inserción masiva en MongoDB hoy. Se pueden insertar múltiples documentos a la vez en MongoDB utilizando la operación de inserción masiva, donde se pasa un array de documentos al método insert como parámetro.

Inserción masiva en MongoDB

La inserción masiva en MongoDB realiza una inserción ordenada por defecto. Si ocurre un error durante la inserción en cierto punto, la inserción no se realiza para los documentos restantes. Veamos un ejemplo de cómo insertar múltiples documentos utilizando la inserción masiva de MongoDB a través de la línea de comandos.

Insertar muchos documentos en MongoDB


> db.car.insert(
... [
... { _id:1,name:"Audi",color:"Red",cno:"H101",mfdcountry:"Germany",speed:75 },
... { _id:2,name:"Swift",color:"Black",cno:"H102",mfdcountry:"Italy",speed:60 },

... { _id:3,name:"Maruthi800",color:"Blue",cno:"H103",mfdcountry:"India",speed:70 },
... { _id:4,name:"Polo",color:"White",cno:"H104",mfdcountry:"Japan",speed:65 },
... { _id:5,name:"Volkswagen",color:"JetBlue",cno:"H105",mfdcountry:"Rome",speed:80 }       
...  ]
...  )
BulkWriteResult({
	"writeErrors" : [ ],
	"writeConcernErrors" : [ ],
	"nInserted" : 5,
	"nUpserted" : 0,
	"nMatched" : 0,
	"nModified" : 0,
	"nRemoved" : 0,
	"upserted" : [ ]
})

Esta operación insertó cinco documentos. MongoDB crea automáticamente un campo id si no es especificado por el usuario en la consulta. La columna “nInserted” le indica al usuario la cantidad de documentos que fueron insertados. Para ver los documentos insertados, realice la siguiente consulta como se muestra a continuación.


> db.car.find()
{ "_id" : 1, "name" : "Audi", "color" : "Red", "cno" : "H101", "mfdcountry" : "Germany", "speed" : 75 }
{ "_id" : 2, "name" : "Swift", "color" : "Black", "cno" : "H102", "mfdcountry" : "Italy", "speed" : 60 }
{ "_id" : 3, "name" : "Maruthi800", "color" : "Blue", "cno" : "H103", "mfdcountry" : "India", "speed" : 70 }
{ "_id" : 4, "name" : "Polo", "color" : "White", "cno" : "H104", "mfdcountry" : "Japan", "speed" : 65 }
{ "_id" : 5, "name" : "Volkswagen", "color" : "JetBlue", "cno" : "H105", "mfdcountry" : "Rome", "speed" : 80 }
> 

Lea más sobre las operaciones de buscar en MongoDB e insertar en MongoDB. Durante la inserción no es obligatorio que el usuario proporcione todos los campos en la consulta. Ahora veamos cómo funciona la inserción cuando algunos de los campos no están especificados.

Insertar documentos en bloque en MongoDB especificando algunos de los campos


> db.car.insert(
... [
... { _id:6,name:"HondaCity",color:"Grey",cno:"H106",mfdcountry:"Sweden",speed:45 },
... {name:"Santro",color:"Pale Blue",cno:"H107",mfdcountry:"Denmark",speed:55 },
... { _id:8,name:"Zen",speed:54 }
... ]
... )
BulkWriteResult({
	"writeErrors" : [ ],
	"writeConcernErrors" : [ ],
	"nInserted" : 3,
	"nUpserted" : 0,
	"nMatched" : 0,
	"nModified" : 0,
	"nRemoved" : 0,
	"upserted" : [ ]
})
> 

En este ejemplo, para el segundo documento, el campo de identificación (id) no está especificado por el usuario y, para el tercer documento, solo se suministran en la consulta los campos id, nombre y velocidad. La consulta realiza una inserción exitosa incluso si faltan algunos campos en los documentos segundo y tercero. La columna nInserted indica que se insertaron tres documentos. Llama al método find y verifica los documentos insertados.


> db.car.find()
{ "_id" : 1, "name" : "Audi", "color" : "Red", "cno" : "H101", "mfdcountry" : "Germany", "speed" : 75 }
{ "_id" : 2, "name" : "Swift", "color" : "Black", "cno" : "H102", "mfdcountry" : "Italy", "speed" : 60 }
{ "_id" : 3, "name" : "Maruthi800", "color" : "Blue", "cno" : "H103", "mfdcountry" : "India", "speed" : 70 }
{ "_id" : 4, "name" : "Polo", "color" : "White", "cno" : "H104", "mfdcountry" : "Japan", "speed" : 65 }
{ "_id" : 5, "name" : "Volkswagen", "color" : "JetBlue", "cno" : "H105", "mfdcountry" : "Rome", "speed" : 80 }
{ "_id" : 6, "name" : "HondaCity", "color" : "Grey", "cno" : "H106", "mfdcountry" : "Sweden", "speed" : 45 }
{ "_id" : ObjectId("54885b8e61307aec89441a0b"), "name" : "Santro", "color" : "Pale Blue", "cno" : "H107", "mfdcountry" : "Denmark", "speed" : 55 }
{ "_id" : 8, "name" : "Zen", "speed" : 54 }
> 

Ten en cuenta que el id se genera automáticamente por MongoDB para el automóvil “Santro”. Para el id 8, solo se insertan los campos de nombre y velocidad.

Insertando documentos desordenados

Al realizar una inserción desordenada, si se produce un error en un punto determinado, MongoDB continúa insertando los documentos restantes en un array. Por ejemplo;


> db.car.insert(
... [
... { _id:9,name:"SwiftDezire",color:"Maroon",cno:"H108",mfdcountry:"New York",speed:40 },
... { name:"Punto",color:"Wine Red",cno:"H109",mfdcountry:"Paris",speed:45 },
...  ],
... { ordered: false }
... )
BulkWriteResult({
	"writeErrors" : [ ],
	"writeConcernErrors" : [ ],
	"nInserted" : 2,
	"nUpserted" : 0,
	"nMatched" : 0,
	"nModified" : 0,
	"nRemoved" : 0,
	"upserted" : [ ]
})
> 

El false ordenado se especifica en la consulta de inserción indicando que es una colección desordenada. Ejecuta db.car.find()


{ "_id" : 1, "name" : "Audi", "color" : "Red", "cno" : "H101", "mfdcountry" : "Germany", "speed" : 75 }
{ "_id" : 2, "name" : "Swift", "color" : "Black", "cno" : "H102", "mfdcountry" : "Italy", "speed" : 60 }
{ "_id" : 3, "name" : "Maruthi800", "color" : "Blue", "cno" : "H103", "mfdcountry" : "India", "speed" : 70 }
{ "_id" : 4, "name" : "Polo", "color" : "White", "cno" : "H104", "mfdcountry" : "Japan", "speed" : 65 }
{ "_id" : 5, "name" : "Volkswagen", "color" : "JetBlue", "cno" : "H105", "mfdcountry" : "Rome", "speed" : 80 }
{ "_id" : 6, "name" : "HondaCity", "color" : "Grey", "cno" : "H106", "mfdcountry" : "Sweden", "speed" : 45 }
{ "_id" : ObjectId("54746407d785e3a05a1808a6"), "name" : "Santro", "color" : "Pale Blue", "cno" : "H107", "mfdcountry" : "Denmark", "speed" : 55 }
{ "_id" : 8, "name" : "Zen", "speed" : 54 }
{ "_id" : 9, "name" : "SwiftDezire", "color" : "Maroon", "cno" : "H108", "mfdcountry" : "New York", "speed" : 40 }
{ "_id" : ObjectId("5474642dd785e3a05a1808a7"), "name" : "Punto", "color" : "Wine Red", "cno" : "H109", "mfdcountry" : "Paris", "speed" : 45 }

Los documentos se insertan y, como puedes ver, es una inserción desordenada. Si el método de inserción encuentra un error, el resultado incluye el campo “WriteResult.writeErrors” que indica el mensaje de error que causó el fallo.

Insertando valor de id duplicado


> db.car.insert({_id:6,name:"Innova"})
WriteResult({
	"nInserted" : 0,
	"writeError" : {
		"code" : 11000,
		"errmsg" : "insertDocument :: caused by :: 11000 E11000 duplicate key error index: journaldev.car.$_id_  dup key: { : 6.0 }"
	}
})
> 

El error indica que estamos insertando un documento para el id 6 que ya contiene un documento, por lo que arroja un error de clave duplicada para el id de valor 6.

Método Bulk.insert() de MongoDB

Este método realiza una operación de inserción en grandes cantidades. Se introdujo a partir de la versión 2.6 en adelante. La sintaxis es Bulk.insert(<documento>). documento: especifica el documento que se va a insertar. Ahora veremos el ejemplo de inserción masiva.

Inserción masiva no ordenada


> var carbulk = db.car.initializeUnorderedBulkOp();
> carbulk.insert({ name:"Ritz", color:"Grey",cno:"H109",mfdcountry:"Mexico",speed:62});
> carbulk.insert({ name:"Versa", color:"Magenta",cno:"H110",mfdcountry:"France",speed:68});
> carbulk.insert({ name:"Innova", color:"JetRed",cno:"H111",mfdcountry:"Dubai",speed:72});
> carbulk.execute();
BulkWriteResult({
	"writeErrors" : [ ],
	"writeConcernErrors" : [ ],
	"nInserted" : 3,
	"nUpserted" : 0,
	"nMatched" : 0,
	"nModified" : 0,
	"nRemoved" : 0,
	"upserted" : [ ]
})
> 

Se crea una lista no ordenada llamada carbulk y se especifica la consulta de inserción con los campos y valores a insertar. Es necesario llamar al método execute() después de la última declaración de inserción para asegurarse de que los datos se inserten realmente en la base de datos.

Inserción Ordenada Masiva de MongoDB

Esto es similar a la inserción masiva desordenada pero usamos la llamada initializeOrderedBulkOp.


>var car1bulk = db.car.initializeOrderedBulkOp();
>car1bulk.insert({ name:"Ertiga", color:"Red",cno:"H112",mfdcountry:"America",speed:65});
>car1bulk.insert({ name:"Quanta", color:"Maroon",cno:"H113",mfdcountry:"Rome",speed:78});
>car1bulk.execute();
BulkWriteResult({
	"writeErrors" : [ ],
	"writeConcernErrors" : [ ],
	"nInserted" : 2,
	"nUpserted" : 0,
	"nMatched" : 0,
	"nModified" : 0,
	"nRemoved" : 0,
	"upserted" : [ ]
})

Primero creamos una lista ordenada de la colección de coches llamada carbulk1 y luego insertamos los documentos invocando el método execute().

Programa Java para Inserción Masiva de MongoDB

Vamos a ver un programa en Java para diferentes operaciones masivas, que hemos visto utilizando comandos de shell hasta ahora. A continuación se muestra el programa en Java para la inserción masiva utilizando la versión 2.x del controlador de MongoDB para Java.

package com.journaldev.mongodb;

import com.mongodb.BasicDBObject;
import com.mongodb.BulkWriteOperation;
import com.mongodb.BulkWriteResult;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.MongoClient;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List;

public class MongoDBBulkInsert {

	//método que inserta todos los documentos 
    public static void insertmultipledocs() throws UnknownHostException{
    
    //Obtener una nueva conexión a la base de datos asumiendo que está en funcionamiento    
 
     MongoClient mongoClient = new MongoClient("localhost");
    
     ////usar test como base de datos, utiliza tu base de datos aquí 
     DB db=mongoClient.getDB("test");
     
     ////obtener el objeto de colección, se usa "car" aquí, utiliza el tuyo propio 
     DBCollection coll = db.getCollection("car");
     
    //crear un nuevo objeto
    DBObject d1 = new BasicDBObject();
    
    //datos para el objeto d1
    d1.put("_id", 11);
    d1.put("name","WagonR");
    d1.put("color", "MetallicSilver");
    d1.put("cno", "H141");
    d1.put("mfdcountry","Australia");
    d1.put("speed",66);
    
    DBObject d2 = new BasicDBObject();
    
    //datos para el objeto d2
    d2.put("_id", 12);
    d2.put("name","Xylo");
    d2.put("color", "JetBlue");
    d2.put("cno", "H142");
    d2.put("mfdcountry","Europe");
    d2.put("speed",69);
        
    
    DBObject d3 = new BasicDBObject();
    
    //datos para el objeto d3
    d3.put("_id", 13);
    d3.put("name","Alto800");
    d3.put("color", "JetGrey");
    d3.put("cno", "H143");
    d3.put("mfdcountry","Austria");
    d3.put("speed",74);
    
    //crear una nueva lista
    List docs = new ArrayList<>();
    
    //agregar d1, d2 y d3 a la lista docs
    docs.add(d1);
    docs.add(d2);
    docs.add(d3);
    
    //insertar la lista docs en la colección
    coll.insert(docs);
    
    
    //almacena el resultado en el cursor
    DBCursor carmuldocs = coll.find();
    
    
    //imprimir el contenido del cursor
     try {
         while(carmuldocs.hasNext()) {
       System.out.println(carmuldocs.next());
        }
    }        finally {
            carmuldocs.close();//close the cursor
    } 
    
    
    }
    
    //método que inserta documentos con algunos campos
    public static void insertsomefieldsformultipledocs() throws UnknownHostException{
    
    //Obtener una nueva conexión a la base de datos asumiendo que está en funcionamiento    
 
     MongoClient mongoClient = new MongoClient("localhost");
    
     ////usar test como base de datos, utiliza tu base de datos aquí 
     DB db=mongoClient.getDB("test");
     
     ////obtener el objeto de colección, se usa "car" aquí, utiliza el tuyo propio 
     DBCollection coll = db.getCollection("car");
    
    //crear objeto d1 
    DBObject d1 = new BasicDBObject();
    
    //insertar datos para nombre, color y velocidad
    d1.put("name","Indica");
    d1.put("color", "Silver");
    d1.put("cno", "H154");
    
    
    DBObject d2 = new BasicDBObject();
    
    //insertar datos para id, nombre y velocidad
    d2.put("_id", 43);
    d2.put("name","Astar");
    
    d2.put("speed",79);
        
    
    
    
    List docs = new ArrayList<>();
    docs.add(d1);
    docs.add(d2);
   
    
    coll.insert(docs);
    
    DBCursor carmuldocs = coll.find();
    
     System.out.println("-----------------------------------------------");
     try {
         while(carmuldocs.hasNext()) {
       System.out.println(carmuldocs.next());
        }
    }        finally {
            carmuldocs.close();//close the cursor
    } 
    
    
    }
    
    //método que comprueba documentos duplicados
    public static void insertduplicatedocs() throws UnknownHostException{
    
    //Obtener una nueva conexión a la base de datos asumiendo que está en funcionamiento    
 
     MongoClient mongoClient = new MongoClient("localhost");
    
     ////usar test como base de datos, utiliza tu base de datos aquí 
     DB db=mongoClient.getDB("test");
     
     ////obtener el objeto de colección, se usa "car" aquí, utiliza el tuyo propio 
     DBCollection coll = db.getCollection("car");
     
    DBObject d1 = new BasicDBObject();
    
    //insertar datos duplicados de id11
    d1.put("_id", 11);
    d1.put("name","WagonR-Lxi");
    
    coll.insert(d1);
    
   
    DBCursor carmuldocs = coll.find();
    
     System.out.println("-----------------------------------------------");
     try {
         while(carmuldocs.hasNext()) {
       System.out.println(carmuldocs.next());
        }
    }        finally {
            carmuldocs.close();//close the cursor
    } 
    
    
    }
    
    //método para realizar una lista desordenada a granel
    public static void insertbulkunordereddocs() throws UnknownHostException{
    
    //Obtener una nueva conexión a la base de datos asumiendo que está en funcionamiento    
 
     MongoClient mongoClient = new MongoClient("localhost");
    
     ////usar test como base de datos, utiliza tu base de datos aquí 
     DB db=mongoClient.getDB("test");
     
     ////obtener el objeto de colección, se usa "car" aquí, utiliza el tuyo propio 
     DBCollection coll = db.getCollection("car");
     
    DBObject d1 = new BasicDBObject();
    
    
    d1.put("name","Suzuki S-4");
    d1.put("color", "Yellow");
    d1.put("cno", "H167");
    d1.put("mfdcountry","Italy");
    d1.put("speed",54);
    
    DBObject d2 = new BasicDBObject();
    
    
    d2.put("name","Santro-Xing");
    d2.put("color", "Cyan");
    d2.put("cno", "H164");
    d2.put("mfdcountry","Holand");
    d2.put("speed",76);
        
    //inicializar y crear a granel desordenado
    BulkWriteOperation  b1 = coll.initializeUnorderedBulkOperation();
    
    //insertar d1 y d2 en a granel b1
    b1.insert(d1);
    b1.insert(d2);
    
    //ejecutar a granel
    BulkWriteResult  r1 = b1.execute();
    
    
    
    DBCursor carmuldocs = coll.find();
    
    System.out.println("-----------------------------------------------");
     try {
         while(carmuldocs.hasNext()) {
       System.out.println(carmuldocs.next());
        }
    }        finally {
            carmuldocs.close();//close the cursor
    } 
    
    
    }
    
    //método que realiza una inserción a granel para una lista ordenada
       public static void insertbulkordereddocs() throws UnknownHostException{
    
    //Obtener una nueva conexión a la base de datos asumiendo que está en funcionamiento    
 
     MongoClient mongoClient = new MongoClient("localhost");
    
     ////usar test como base de datos, utiliza tu base de datos aquí 
     DB db=mongoClient.getDB("test");
     
     ////obtener el objeto de colección, se usa "car" aquí, utiliza el tuyo propio 
     DBCollection coll = db.getCollection("car");
     
    DBObject d1 = new BasicDBObject();
    
    
    d1.put("name","Palio");
    d1.put("color", "Purple");
    d1.put("cno", "H183");
    d1.put("mfdcountry","Venice");
    d1.put("speed",82);
    
    DBObject d2 = new BasicDBObject();
    
    
    d2.put("name","Micra");
    d2.put("color", "Lime");
    d2.put("cno", "H186");
    d2.put("mfdcountry","Ethopia");
    d2.put("speed",84);
        
    //inicializar y crear a granel ordenado 
    BulkWriteOperation  b1 = coll.initializeOrderedBulkOperation();
    
    b1.insert(d1);
    b1.insert(d2);
    
    //invocar execute
    BulkWriteResult  r1 = b1.execute();
    
    
    
    DBCursor carmuldocs = coll.find();
    
    System.out.println("-----------------------------------");
    
     try {
         while(carmuldocs.hasNext()) {
       System.out.println(carmuldocs.next());
        }
    }        finally {
            carmuldocs.close();//close the cursor
    } 
    
    
    }
    
    
    public static void main(String[] args) throws UnknownHostException{
        
       //invocar todos los métodos para realizar la operación de inserción
       
       insertmultipledocs();
       insertsomefieldsformultipledocs();
       
        insertbulkunordereddocs();
        insertbulkordereddocs();
        insertduplicatedocs();
    }

}

A continuación se muestra el resultado del programa anterior.


{ "_id" : 11 , "name" : "WagonR" , "color" : "MetallicSilver" , "cno" : "H141" , "mfdcountry" : "Australia" , "speed" : 66}
{ "_id" : 12 , "name" : "Xylo" , "color" : "JetBlue" , "cno" : "H142" , "mfdcountry" : "Europe" , "speed" : 69}
{ "_id" : 13 , "name" : "Alto800" , "color" : "JetGrey" , "cno" : "H143" , "mfdcountry" : "Austria" , "speed" : 74}
-----------------------------------------------
{ "_id" : 11 , "name" : "WagonR" , "color" : "MetallicSilver" , "cno" : "H141" , "mfdcountry" : "Australia" , "speed" : 66}
{ "_id" : 12 , "name" : "Xylo" , "color" : "JetBlue" , "cno" : "H142" , "mfdcountry" : "Europe" , "speed" : 69}
{ "_id" : 13 , "name" : "Alto800" , "color" : "JetGrey" , "cno" : "H143" , "mfdcountry" : "Austria" , "speed" : 74}
{ "_id" : { "$oid" : "548860e803649b8efac5a1d7"} , "name" : "Indica" , "color" : "Silver" , "cno" : "H154"}
{ "_id" : 43 , "name" : "Astar" , "speed" : 79}
-----------------------------------------------
{ "_id" : 11 , "name" : "WagonR" , "color" : "MetallicSilver" , "cno" : "H141" , "mfdcountry" : "Australia" , "speed" : 66}
{ "_id" : 12 , "name" : "Xylo" , "color" : "JetBlue" , "cno" : "H142" , "mfdcountry" : "Europe" , "speed" : 69}
{ "_id" : 13 , "name" : "Alto800" , "color" : "JetGrey" , "cno" : "H143" , "mfdcountry" : "Austria" , "speed" : 74}
{ "_id" : { "$oid" : "548860e803649b8efac5a1d7"} , "name" : "Indica" , "color" : "Silver" , "cno" : "H154"}
{ "_id" : 43 , "name" : "Astar" , "speed" : 79}
{ "_id" : { "$oid" : "548860e803649b8efac5a1d8"} , "name" : "Suzuki S-4" , "color" : "Yellow" , "cno" : "H167" , "mfdcountry" : "Italy" , "speed" : 54}
{ "_id" : { "$oid" : "548860e803649b8efac5a1d9"} , "name" : "Santro-Xing" , "color" : "Cyan" , "cno" : "H164" , "mfdcountry" : "Holand" , "speed" : 76}
-----------------------------------
{ "_id" : 11 , "name" : "WagonR" , "color" : "MetallicSilver" , "cno" : "H141" , "mfdcountry" : "Australia" , "speed" : 66}
{ "_id" : 12 , "name" : "Xylo" , "color" : "JetBlue" , "cno" : "H142" , "mfdcountry" : "Europe" , "speed" : 69}
{ "_id" : 13 , "name" : "Alto800" , "color" : "JetGrey" , "cno" : "H143" , "mfdcountry" : "Austria" , "speed" : 74}
{ "_id" : { "$oid" : "548860e803649b8efac5a1d7"} , "name" : "Indica" , "color" : "Silver" , "cno" : "H154"}
{ "_id" : 43 , "name" : "Astar" , "speed" : 79}
{ "_id" : { "$oid" : "548860e803649b8efac5a1d8"} , "name" : "Suzuki S-4" , "color" : "Yellow" , "cno" : "H167" , "mfdcountry" : "Italy" , "speed" : 54}
{ "_id" : { "$oid" : "548860e803649b8efac5a1d9"} , "name" : "Santro-Xing" , "color" : "Cyan" , "cno" : "H164" , "mfdcountry" : "Holand" , "speed" : 76}
{ "_id" : { "$oid" : "548860e803649b8efac5a1da"} , "name" : "Palio" , "color" : "Purple" , "cno" : "H183" , "mfdcountry" : "Venice" , "speed" : 82}
{ "_id" : { "$oid" : "548860e803649b8efac5a1db"} , "name" : "Micra" , "color" : "Lime" , "cno" : "H186" , "mfdcountry" : "Ethopia" , "speed" : 84}
Exception in thread "main" com.mongodb.MongoException$DuplicateKey: { "serverUsed" : "localhost:27017" , "ok" : 1 , "n" : 0 , "err" : "insertDocument :: caused by :: 11000 E11000 duplicate key error index: test.car.$_id_  dup key: { : 11 }" , "code" : 11000}
	at com.mongodb.CommandResult.getWriteException(CommandResult.java:88)
	at com.mongodb.CommandResult.getException(CommandResult.java:79)
	at com.mongodb.DBCollectionImpl.translateBulkWriteException(DBCollectionImpl.java:314)
	at com.mongodb.DBCollectionImpl.insert(DBCollectionImpl.java:189)
	at com.mongodb.DBCollectionImpl.insert(DBCollectionImpl.java:165)
	at com.mongodb.DBCollection.insert(DBCollection.java:93)
	at com.mongodb.DBCollection.insert(DBCollection.java:78)
	at com.mongodb.DBCollection.insert(DBCollection.java:120)
	at com.journaldev.mongodb.MongoDBBulkInsert.insertduplicatedocs(MongoDBBulkInsert.java:163)
	at com.journaldev.mongodb.MongoDBBulkInsert.main(MongoDBBulkInsert.java:304)

Si estás utilizando el controlador de MongoDB para Java 3.x, entonces utiliza el siguiente programa.

package com.journaldev.mongodb.main;

import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List;

import org.bson.Document;

import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;

public class MongoDBBulkInsert {

	public static void main(String[] args) throws UnknownHostException {

		// invoca todos los métodos para realizar la operación de inserción

		insertmultipledocs();
		insertsomefieldsformultipledocs();

		insertduplicatedocs();
	}

	// método que inserta todos los documentos
	public static void insertmultipledocs() throws UnknownHostException {

		// Obtén una nueva conexión a la base de datos asumiendo que está en funcionamiento

		MongoClient mongoClient = new MongoClient("localhost");

		//// usa test como base de datos, usa tu base de datos aquí
		MongoDatabase db = mongoClient.getDatabase("test");

		//// obtén el objeto de colección, aquí se utiliza "car", usa el tuyo propio
		MongoCollection coll = db.getCollection("car");

		// crea un nuevo objeto
		Document d1 = new Document();

		// datos para el objeto d1
		d1.put("_id", 11);
		d1.put("name", "WagonR");
		d1.put("color", "MetallicSilver");
		d1.put("cno", "H141");
		d1.put("mfdcountry", "Australia");
		d1.put("speed", 66);

		Document d2 = new Document();

		// datos para el objeto d2
		d2.put("_id", 12);
		d2.put("name", "Xylo");
		d2.put("color", "JetBlue");
		d2.put("cno", "H142");
		d2.put("mfdcountry", "Europe");
		d2.put("speed", 69);

		Document d3 = new Document();

		// datos para el objeto d3
		d3.put("_id", 13);
		d3.put("name", "Alto800");
		d3.put("color", "JetGrey");
		d3.put("cno", "H143");
		d3.put("mfdcountry", "Austria");
		d3.put("speed", 74);

		// crea una nueva lista
		List docs = new ArrayList<>();

		// agrega d1, d2 y d3 a la lista docs
		docs.add(d1);
		docs.add(d2);
		docs.add(d3);

		// inserta la lista docs en la colección
		coll.insertMany(docs);

		// almacena el resultado en un cursor
		FindIterable carmuldocs = coll.find();

		for (Document d : carmuldocs)
			System.out.println(d);

		mongoClient.close();
	}

	// método que inserta documentos con algunos campos
	public static void insertsomefieldsformultipledocs() throws UnknownHostException {

		// Obtén una nueva conexión a la base de datos asumiendo que está en funcionamiento

		MongoClient mongoClient = new MongoClient("localhost");

		//// usa test como base de datos, usa tu base de datos aquí
		MongoDatabase db = mongoClient.getDatabase("test");

		//// obtén el objeto de colección, aquí se utiliza "car", usa el tuyo propio
		MongoCollection coll = db.getCollection("car");

		// crea el objeto d1
		Document d1 = new Document();

		// inserta datos para nombre, color y velocidad
		d1.put("name", "Indica");
		d1.put("color", "Silver");
		d1.put("cno", "H154");

		Document d2 = new Document();

		// inserta datos para id, nombre y velocidad
		d2.put("_id", 43);
		d2.put("name", "Astar");

		d2.put("speed", 79);

		List docs = new ArrayList<>();
		docs.add(d1);
		docs.add(d2);

		coll.insertMany(docs);

		FindIterable carmuldocs = coll.find();

		System.out.println("-----------------------------------------------");

		for (Document d : carmuldocs)
			System.out.println(d);

		mongoClient.close();

	}

	// método que comprueba documentos duplicados
	public static void insertduplicatedocs() throws UnknownHostException {

		// Obtén una nueva conexión a la base de datos asumiendo que está en funcionamiento

		MongoClient mongoClient = new MongoClient("localhost");

		//// usa test como base de datos, usa tu base de datos aquí
		MongoDatabase db = mongoClient.getDatabase("test");

		//// obtén el objeto de colección, aquí se utiliza "car", usa el tuyo propio
		MongoCollection coll = db.getCollection("car");

		Document d1 = new Document();

		// inserta datos duplicados de id11
		d1.put("_id", 11);
		d1.put("name", "WagonR-Lxi");

		coll.insertOne(d1);

		FindIterable carmuldocs = coll.find();

		System.out.println("-----------------------------------------------");

		for (Document d : carmuldocs)
			System.out.println(d);

		mongoClient.close();

	}

}

A continuación se muestra una ejecución de muestra del programa Java de inserción masiva de MongoDB. Eso es todo para la inserción masiva en MongoDB usando la terminal de Mongo y el controlador de Java, veremos más operaciones de MongoDB en próximas publicaciones.

Source:
https://www.digitalocean.com/community/tutorials/mongodb-bulk-insert-insertmany