MongoDB Bulk Insert – MongoDB insertMany

Heute werden wir uns mit der Masseneinfügung in MongoDB beschäftigen. Mit der Bulk-Einfügeoperation können mehrere Dokumente gleichzeitig in MongoDB eingefügt werden, indem ein Array von Dokumenten als Parameter an die insert-Methode übergeben wird.

MongoDB Masseneinfügung

Die MongoDB Masseneinfügung führt standardmäßig eine geordnete Einfügung durch. Wenn während der Einfügung an einer bestimmten Stelle ein Fehler auftritt, erfolgt die Einfügung für die verbleibenden Dokumente nicht. Schauen wir uns ein Beispiel dafür an, wie man über die Befehlszeile mehrere Dokumente mit der MongoDB Masseneinfügung einfügt.

MongoDB fügt viele Dokumente ein


> 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" : [ ]
})

Diese Operation hat fünf Dokumente eingefügt. MongoDB erstellt automatisch ein ID-Feld, wenn es vom Benutzer nicht in der Abfrage angegeben wird. Die Spalte „nInserted“ gibt dem Benutzer die Anzahl der eingefügten Dokumente an. Um die eingefügten Dokumente anzuzeigen, führen Sie die folgende Abfrage wie unten gezeigt aus.


> 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 }
> 

Erfahren Sie mehr über die MongoDB find und MongoDB insert Operationen. Beim Einfügen ist es nicht zwingend erforderlich, dass der Benutzer alle Felder in der Abfrage angibt. Schauen wir uns nun an, wie die Einfügung funktioniert, wenn einige Felder nicht angegeben sind.

MongoDB Bulk Insert von Dokumenten unter Angabe einiger Felder


> 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" : [ ]
})
> 

In diesem Beispiel wird für das zweite Dokument das ID-Feld nicht vom Benutzer angegeben, und für das dritte Dokument werden nur die ID-, Name- und Geschwindigkeitsfelder in der Abfrage bereitgestellt. Die Abfrage führt eine erfolgreiche Einfügung durch, obwohl einige Felder im zweiten und dritten Dokument fehlen. Die Spalte „nInserted“ gibt an, dass drei Dokumente eingefügt wurden. Rufen Sie die Methode find auf und überprüfen Sie die eingefügten Dokumente.


> 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 }
> 

Beachten Sie, dass die ID von MongoDB automatisch für das Auto „Santro“ generiert wird. Für ID 8 werden nur die Felder Name und Geschwindigkeit eingefügt.

Einfügen von ungeordneten Dokumenten

Bei ungeordneter Einfügung setzt MongoDB die Einfügung der verbleibenden Dokumente im Array fort, wenn an einer bestimmten Stelle ein Fehler auftritt. Zum Beispiel;


> 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" : [ ]
})
> 

Im Insert-Query wird „ordered false“ angegeben, was darauf hinweist, dass es sich um eine ungeordnete Sammlung handelt. Führen Sie db.car.find() aus.


{ "_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 }

Die Dokumente werden eingefügt, und wie Sie sehen können, handelt es sich um eine ungeordnete Einfügung. Wenn die Insert-Methode auf einen Fehler stößt, enthält das Ergebnis das Feld „WriteResult.writeErrors“, das die Fehlermeldung angibt, die das Scheitern verursacht hat.

Einfügen des doppelten ID-Werts


> 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 }"
	}
})
> 

Der Fehler deutet darauf hin, dass wir ein Dokument für die ID 6 einfügen, das bereits ein Dokument enthält, und wirft daher einen Fehler für den doppelten Schlüsselwert für die ID 6.

MongoDB Bulk.insert() Methode

Diese Methode führt eine Massen-Einfügeoperation durch. Sie wurde ab Version 2.6 eingeführt. Die Syntax lautet Bulk.insert(<Dokument>). Dokument: gibt das einzufügende Dokument an. Nun werden wir das Beispiel für die Masseneinfügung sehen.

Massen-Ungeordnete Einfügung


> 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" : [ ]
})
> 

Eine ungeordnete Liste namens carbulk wird erstellt und eine Einfügeabfrage wird mit den Feldern und Werten angegeben, die eingefügt werden sollen. Beachten Sie, dass es erforderlich ist, die Methode execute() nach der letzten Einfügeanweisung aufzurufen, um sicherzustellen, dass die Daten tatsächlich in die Datenbank eingefügt werden.

MongoDB Bulk Ordered Insert

Dies ist ähnlich wie ein ungeordneter Masseneinfügevorgang, aber wir verwenden den initializeOrderedBulkOp-Aufruf.


>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" : [ ]
})

Zuerst erstellen wir eine geordnete Liste der Autosammlung namens carbulk1 und fügen dann die Dokumente ein, indem wir die execute() Methode aufrufen.

MongoDB Bulk Insert Java Programm

Lassen Sie uns ein Java-Programm für verschiedene Massenoperationen sehen, die wir bisher mit Shell-Befehlen gesehen haben. Unten ist das Java-Programm für die Masseneinfügung unter Verwendung des MongoDB-Java-Treibers Version 2.x.

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 {

	// Methode, die alle Dokumente einfügt 
    public static void insertmultipledocs() throws UnknownHostException{
    
    // Erhalte eine neue Verbindung zur Datenbank, vorausgesetzt sie läuft    
 
     MongoClient mongoClient = new MongoClient("localhost");
    
     //// Verwende "test" als Datenbank, setze hier deine eigene Datenbank ein 
     DB db=mongoClient.getDB("test");
     
     //// Hol das Collection-Objekt, "car" wird hier verwendet, nutze dein eigenes 
     DBCollection coll = db.getCollection("car");
     
    // Erstelle ein neues Objekt
    DBObject d1 = new BasicDBObject();
    
    // Daten für Objekt 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();
    
    // Daten für Objekt 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();
    
    // Daten für Objekt 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);
    
    // Erstelle eine neue Liste
    List docs = new ArrayList<>();
    
    // Füge d1, d2 und d3 der Liste "docs" hinzu
    docs.add(d1);
    docs.add(d2);
    docs.add(d3);
    
    // Füge die Liste "docs" der Collection hinzu
    coll.insert(docs);
    
    
    // Speichere das Ergebnis im Cursor
    DBCursor carmuldocs = coll.find();
    
    
    // Gib den Inhalt des Cursors aus
     try {
         while(carmuldocs.hasNext()) {
       System.out.println(carmuldocs.next());
        }
    }        finally {
            carmuldocs.close();//close the cursor
    } 
    
    
    }
    
    // Methode, die Dokumente mit bestimmten Feldern einfügt
    public static void insertsomefieldsformultipledocs() throws UnknownHostException{
    
    // Erhalte eine neue Verbindung zur Datenbank, vorausgesetzt sie läuft    
 
     MongoClient mongoClient = new MongoClient("localhost");
    
     //// Verwende "test" als Datenbank, setze hier deine eigene Datenbank ein 
     DB db=mongoClient.getDB("test");
     
     //// Hol das Collection-Objekt, "car" wird hier verwendet, nutze dein eigenes 
     DBCollection coll = db.getCollection("car");
    
    // Erstelle Objekt d1 
    DBObject d1 = new BasicDBObject();
    
    // Füge Daten für Name, Farbe und Geschwindigkeit ein
    d1.put("name","Indica");
    d1.put("color", "Silver");
    d1.put("cno", "H154");
    
    
    DBObject d2 = new BasicDBObject();
    
    // Füge Daten für ID, Name und Geschwindigkeit ein
    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
    } 
    
    
    }
    
    // Methode, die auf doppelte Dokumente prüft
    public static void insertduplicatedocs() throws UnknownHostException{
    
    // Erhalte eine neue Verbindung zur Datenbank, vorausgesetzt sie läuft    
 
     MongoClient mongoClient = new MongoClient("localhost");
    
     //// Verwende "test" als Datenbank, setze hier deine eigene Datenbank ein 
     DB db=mongoClient.getDB("test");
     
     //// Hol das Collection-Objekt, "car" wird hier verwendet, nutze dein eigenes 
     DBCollection coll = db.getCollection("car");
     
    DBObject d1 = new BasicDBObject();
    
    // Füge doppelte Daten von ID 11 ein
    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
    } 
    
    
    }
    
    // Methode zum Durchführen von Masseneinfügungen in ungeordneter Liste
    public static void insertbulkunordereddocs() throws UnknownHostException{
    
    // Erhalte eine neue Verbindung zur Datenbank, vorausgesetzt sie läuft    
 
     MongoClient mongoClient = new MongoClient("localhost");
    
     //// Verwende "test" als Datenbank, setze hier deine eigene Datenbank ein 
     DB db=mongoClient.getDB("test");
     
     //// Hol das Collection-Objekt, "car" wird hier verwendet, nutze dein eigenes 
     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);
        
    // Initialisiere und erstelle eine ungeordnete Masseneinfügung
    BulkWriteOperation  b1 = coll.initializeUnorderedBulkOperation();
    
    // Füge d1 und d2 zu Masse b1 hinzu
    b1.insert(d1);
    b1.insert(d2);
    
    // Führe die Masseneinfügung aus
    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
    } 
    
    
    }
    
    // Methode, die Masseneinfügungen für geordnete Liste durchführt
       public static void insertbulkordereddocs() throws UnknownHostException{
    
    // Erhalte eine neue Verbindung zur Datenbank, vorausgesetzt sie läuft    
 
     MongoClient mongoClient = new MongoClient("localhost");
    
     //// Verwende "test" als Datenbank, setze hier deine eigene Datenbank ein 
     DB db=mongoClient.getDB("test");
     
     //// Hol das Collection-Objekt, "car" wird hier verwendet, nutze dein eigenes 
     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);
        
    // Initialisiere und erstelle geordnete Masse 
    BulkWriteOperation  b1 = coll.initializeOrderedBulkOperation();
    
    b1.insert(d1);
    b1.insert(d2);
    
    // Rufe "execute" auf
    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{
        
       // Rufe alle Methoden auf, um die Einfügeoperation durchzuführen
       
       insertmultipledocs();
       insertsomefieldsformultipledocs();
       
        insertbulkunordereddocs();
        insertbulkordereddocs();
        insertduplicatedocs();
    }

}

Unten finden Sie die Ausgabe des obigen Programms.


{ "_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)

Wenn Sie den MongoDB Java-Treiber 3.x verwenden, verwenden Sie das folgende Programm.

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 {

		//Rufen Sie alle Methoden auf, um den Einfügevorgang durchzuführen

		insertmultipledocs();
		insertsomefieldsformultipledocs();

		insertduplicatedocs();
	}

	//Methode, die alle Dokumente einfügt
	public static void insertmultipledocs() throws UnknownHostException {

		//Holen Sie sich eine neue Verbindung zur Datenbank, vorausgesetzt sie läuft

		MongoClient mongoClient = new MongoClient("localhost");

		////Verwenden Sie test als Datenbank, verwenden Sie hier Ihre eigene
		MongoDatabase db = mongoClient.getDatabase("test");

		////Rufen Sie das Collection-Objekt ab, hier wird car verwendet, verwenden Sie Ihr eigenes
		MongoCollection coll = db.getCollection("car");

		//Erstellen Sie ein neues Objekt
		Document d1 = new Document();

		//Daten für Objekt 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();

		//Daten für Objekt 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();

		//Daten für Objekt 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);

		//Erstellen Sie eine neue Liste
		List docs = new ArrayList<>();

		//Fügen Sie d1, d2 und d3 zu Liste docs hinzu
		docs.add(d1);
		docs.add(d2);
		docs.add(d3);

		//Fügen Sie die Liste docs in die Collection ein
		coll.insertMany(docs);

		//Speichert das Ergebnis im Cursor
		FindIterable carmuldocs = coll.find();

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

		mongoClient.close();
	}

	//Methode, die Dokumente mit einigen Feldern einfügt
	public static void insertsomefieldsformultipledocs() throws UnknownHostException {

		//Holen Sie sich eine neue Verbindung zur Datenbank, vorausgesetzt sie läuft

		MongoClient mongoClient = new MongoClient("localhost");

		////Verwenden Sie test als Datenbank, verwenden Sie hier Ihre eigene
		MongoDatabase db = mongoClient.getDatabase("test");

		////Rufen Sie das Collection-Objekt ab, hier wird car verwendet, verwenden Sie Ihr eigenes
		MongoCollection coll = db.getCollection("car");

		//Erstellen Sie Objekt d1
		Document d1 = new Document();

		//Fügen Sie Daten für name, color und speed ein
		d1.put("name", "Indica");
		d1.put("color", "Silver");
		d1.put("cno", "H154");

		Document d2 = new Document();

		//Fügen Sie Daten für id, name und speed ein
		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();

	}

	//Methode, die auf doppelte Dokumente prüft
	public static void insertduplicatedocs() throws UnknownHostException {

		//Holen Sie sich eine neue Verbindung zur Datenbank, vorausgesetzt sie läuft

		MongoClient mongoClient = new MongoClient("localhost");

		////Verwenden Sie test als Datenbank, verwenden Sie hier Ihre eigene
		MongoDatabase db = mongoClient.getDatabase("test");

		////Rufen Sie das Collection-Objekt ab, hier wird car verwendet, verwenden Sie Ihr eigenes
		MongoCollection coll = db.getCollection("car");

		Document d1 = new Document();

		//Fügen Sie doppelte Daten von id11 ein
		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();

	}

}

Unter dem Bild wird der Beispielablauf des oben genannten MongoDB-Bulk-Insert-Java-Programms gezeigt. Das ist alles für den Bulk-Insert in MongoDB mithilfe der Mongo-Shell und des Java-Treibers. Wir werden in den kommenden Beiträgen weitere MongoDB-Operationen betrachten.

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