Oggi parleremo di inserimento bulk in MongoDB. È possibile inserire più documenti contemporaneamente in MongoDB utilizzando l’operazione di inserimento bulk, in cui viene passato un array di documenti al metodo di inserimento come parametro.
Inserimento bulk di MongoDB
L’inserimento bulk di MongoDB effettua un inserimento ordinato di default. Se si verifica un errore durante l’inserimento in un determinato punto, l’inserimento non viene effettuato per i documenti rimanenti. Vediamo un esempio di come inserire più documenti usando l’inserimento bulk di MongoDB tramite la riga di comando.
Inserimento di molti documenti in 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" : [ ]
})
Questa operazione ha inserito cinque documenti. MongoDB crea automaticamente un campo “id” se non specificato dall’utente nella query. La colonna “nInserted” indica all’utente il numero di documenti inseriti. Per visualizzare i documenti inseriti, eseguire la seguente query come mostrato di seguito.
> 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 }
>
Leggi di più sulle operazioni di ricerca (MongoDB find) e inserimento (MongoDB insert) di MongoDB. Durante l’inserimento, non è obbligatorio fornire tutti i campi nella query. Ora vediamo come funziona l’inserimento quando alcuni dei campi non sono specificati.
Inserimento bulk di documenti MongoDB specificando alcuni campi
> 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 questo esempio, per il secondo documento, il campo id non è specificato dall’utente e per il terzo documento vengono forniti solo i campi id, name e speed nella query. La query effettua un inserimento riuscito anche se alcuni campi mancano nei secondi e terzi documenti. La colonna nInserted indica che sono stati inseriti tre documenti. Invoca il metodo find e verifica i documenti inseriti.
> 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 }
>
Nota che l’id è generato automaticamente da MongoDB per l’auto “Santro”. Per l’id 8 – vengono inseriti solo i campi name e speed.
Inserimento di documenti non ordinati
Mentre si effettua l’inserimento non ordinato, se si verifica un errore in un certo punto, MongoDB continua ad inserire i documenti rimanenti in un array. Ad esempio;
> 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" : [ ]
})
>
Viene specificato l’ordered false nella query di inserimento indicando che si tratta di una collezione non ordinata. Esegui 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 }
I documenti vengono inseriti e come puoi vedere, si tratta di un inserimento non ordinato. Se il metodo di inserimento incontra un errore, il risultato include il campo “WriteResult.writeErrors” che indica il messaggio di errore che ha causato il fallimento.
Inserimento di un valore id duplicato
> 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 }"
}
})
>
L’errore indica che stiamo inserendo un documento per l’id 6, che contiene già un documento, generando così un errore di chiave duplicata per l’id di valore 6.
Metodo MongoDB Bulk.insert()
Questo metodo esegue un’operazione di inserimento in blocco. È introdotto dalla versione 2.6 in poi. La sintassi è Bulk.insert(<documento>)
. documento: specifica il documento da inserire. Ora vedremo l’esempio per l’inserimento in blocco.
Inserimento non ordinato in blocco
> 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" : [ ]
})
>
Viene creata una lista non ordinata chiamata carbulk e viene specificata una query di inserimento con i campi e i valori da inserire. Nota che è necessario chiamare il metodo execute() dopo l’ultima istruzione di inserimento per garantire che i dati siano effettivamente inseriti nel database.
Inserimento in blocco ordinato di MongoDB
Questo è simile all’inserimento in blocco non ordinato, ma utilizziamo la chiamata 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" : [ ]
})
Prima creiamo una lista ordinata di raccolta di auto chiamata carbulk1 e quindi inseriamo i documenti richiamando il metodo execute().
Programma Java per l’inserimento in blocco di MongoDB
Vediamo un programma Java per diverse operazioni in blocco, che abbiamo visto usando comandi della shell fino ad ora. Di seguito è riportato il programma Java per l’inserimento in blocco utilizzando il driver Java di MongoDB versione 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 {
//metodo che inserisce tutti i documenti
public static void insertmultipledocs() throws UnknownHostException{
//Ottieni una nuova connessione al db assumendo che sia in esecuzione
MongoClient mongoClient = new MongoClient("localhost");
////usa test come database, utilizza il tuo database qui
DB db=mongoClient.getDB("test");
////recupera l'oggetto di raccolta, qui viene utilizzata la macchina, utilizza la tua
DBCollection coll = db.getCollection("car");
//crea un nuovo oggetto
DBObject d1 = new BasicDBObject();
//dati per l'oggetto 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();
//dati per l'oggetto 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();
//dati per l'oggetto 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 nuova lista
List docs = new ArrayList<>();
//aggiungi d1, d2 e d3 alla lista docs
docs.add(d1);
docs.add(d2);
docs.add(d3);
//inserisci la lista docs nella raccolta
coll.insert(docs);
//memorizza il risultato nel cursore
DBCursor carmuldocs = coll.find();
//stampare i contenuti del cursore
try {
while(carmuldocs.hasNext()) {
System.out.println(carmuldocs.next());
}
} finally {
carmuldocs.close();//close the cursor
}
}
//metodo che inserisce documenti con alcuni campi
public static void insertsomefieldsformultipledocs() throws UnknownHostException{
//Ottieni una nuova connessione al db assumendo che sia in esecuzione
MongoClient mongoClient = new MongoClient("localhost");
////usa test come database, utilizza il tuo database qui
DB db=mongoClient.getDB("test");
////recupera l'oggetto di raccolta, qui viene utilizzata la macchina, utilizza la tua
DBCollection coll = db.getCollection("car");
//crea l'oggetto d1
DBObject d1 = new BasicDBObject();
//inserisci dati per nome, colore e velocità
d1.put("name","Indica");
d1.put("color", "Silver");
d1.put("cno", "H154");
DBObject d2 = new BasicDBObject();
//inserisci dati per id, nome e velocità
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
}
}
//metodo che controlla i documenti duplicati
public static void insertduplicatedocs() throws UnknownHostException{
//Ottieni una nuova connessione al db assumendo che sia in esecuzione
MongoClient mongoClient = new MongoClient("localhost");
////usa test come database, utilizza il tuo database qui
DB db=mongoClient.getDB("test");
////recupera l'oggetto di raccolta, qui viene utilizzata la macchina, utilizza la tua
DBCollection coll = db.getCollection("car");
DBObject d1 = new BasicDBObject();
//inserisci dati duplicati di 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
}
}
//metodo per eseguire una lista bulk non ordinata
public static void insertbulkunordereddocs() throws UnknownHostException{
//Ottieni una nuova connessione al db assumendo che sia in esecuzione
MongoClient mongoClient = new MongoClient("localhost");
////usa test come database, utilizza il tuo database qui
DB db=mongoClient.getDB("test");
////recupera l'oggetto di raccolta, qui viene utilizzata la macchina, utilizza la tua
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);
//inizializza e crea un bulk non ordinato
BulkWriteOperation b1 = coll.initializeUnorderedBulkOperation();
//inserisci d1 e d2 in bulk b1
b1.insert(d1);
b1.insert(d2);
//esegui il bulk
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
}
}
//metodo che esegue l'inserimento bulk per la lista ordinata
public static void insertbulkordereddocs() throws UnknownHostException{
//Ottieni una nuova connessione al db assumendo che sia in esecuzione
MongoClient mongoClient = new MongoClient("localhost");
////usa test come database, utilizza il tuo database qui
DB db=mongoClient.getDB("test");
////recupera l'oggetto di raccolta, qui viene utilizzata la macchina, utilizza la tua
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);
//inizializza e crea bulk ordinato
BulkWriteOperation b1 = coll.initializeOrderedBulkOperation();
b1.insert(d1);
b1.insert(d2);
//invoca esegui
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{
//invoca tutti i metodi per eseguire l'operazione di inserimento
insertmultipledocs();
insertsomefieldsformultipledocs();
insertbulkunordereddocs();
insertbulkordereddocs();
insertduplicatedocs();
}
}
Di seguito è riportato l’output del programma precedente.
{ "_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)
Se stai utilizzando il driver MongoDB Java 3.x, utilizza il seguente programma.
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 tutti i metodi per eseguire l'operazione di inserimento
insertmultipledocs();
insertsomefieldsformultipledocs();
insertduplicatedocs();
}
// metodo che inserisce tutti i documenti
public static void insertmultipledocs() throws UnknownHostException {
// Ottieni una nuova connessione al database, assumendo che sia in esecuzione
MongoClient mongoClient = new MongoClient("localhost");
//// usa test come database, utilizza il tuo database qui
MongoDatabase db = mongoClient.getDatabase("test");
//// recupera l'oggetto di collezione, qui viene utilizzato 'car', utilizza il tuo
MongoCollection coll = db.getCollection("car");
// crea un nuovo oggetto
Document d1 = new Document();
// dati per l'oggetto 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();
// dati per l'oggetto 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();
// dati per l'oggetto 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 nuova lista
List docs = new ArrayList<>();
// aggiungi d1, d2 e d3 alla lista docs
docs.add(d1);
docs.add(d2);
docs.add(d3);
// inserisci la lista docs nella collezione
coll.insertMany(docs);
// memorizza il risultato nel cursore
FindIterable carmuldocs = coll.find();
for (Document d : carmuldocs)
System.out.println(d);
mongoClient.close();
}
// metodo che inserisce documenti con alcuni campi
public static void insertsomefieldsformultipledocs() throws UnknownHostException {
// Ottieni una nuova connessione al database, assumendo che sia in esecuzione
MongoClient mongoClient = new MongoClient("localhost");
//// usa test come database, utilizza il tuo database qui
MongoDatabase db = mongoClient.getDatabase("test");
//// recupera l'oggetto di collezione, qui viene utilizzato 'car', utilizza il tuo
MongoCollection coll = db.getCollection("car");
// crea l'oggetto d1
Document d1 = new Document();
// inserisci i dati per nome, colore e velocità
d1.put("name", "Indica");
d1.put("color", "Silver");
d1.put("cno", "H154");
Document d2 = new Document();
// inserisci i dati per id, nome e velocità
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();
}
// metodo che controlla i documenti duplicati
public static void insertduplicatedocs() throws UnknownHostException {
// Ottieni una nuova connessione al database, assumendo che sia in esecuzione
MongoClient mongoClient = new MongoClient("localhost");
//// usa test come database, utilizza il tuo database qui
MongoDatabase db = mongoClient.getDatabase("test");
//// recupera l'oggetto di collezione, qui viene utilizzato 'car', utilizza il tuo
MongoCollection coll = db.getCollection("car");
Document d1 = new Document();
// inserisci dati duplicati per 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();
}
}
L’immagine sottostante mostra un esempio di esecuzione del programma Java di inserimento in blocco di MongoDB sopra descritto. Questo è tutto per l’inserimento in blocco in MongoDB utilizzando la shell di Mongo e il driver Java. Ne parleremo di altre operazioni MongoDB nei prossimi articoli.
Source:
https://www.digitalocean.com/community/tutorials/mongodb-bulk-insert-insertmany