Nous allons nous pencher aujourd’hui sur l’insertion en vrac dans MongoDB. Plusieurs documents peuvent être insérés en une seule fois dans MongoDB à l’aide de l’opération d’insertion en vrac, où un tableau de documents est passé en paramètre à la méthode d’insertion.
Insertion en vrac dans MongoDB
L’insertion en vrac dans MongoDB effectue une insertion ordonnée par défaut. Si une erreur se produit lors de l’insertion à un certain point, l’insertion ne se produit pas pour les documents restants. Voyons un exemple de comment insérer plusieurs documents en utilisant l’insertion en vrac de MongoDB via la ligne de commande.
Insérer de nombreux documents dans 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" : [ ]
})
Cette opération a inséré cinq documents. MongoDB crée automatiquement un champ « id » s’il n’est pas spécifié par l’utilisateur dans la requête. La colonne « nInserted » indique à l’utilisateur le nombre de documents insérés. Pour afficher les documents insérés, exécutez la requête suivante comme indiqué ci-dessous.
> 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 }
>
En savoir plus sur les opérations recherche MongoDB et insertion MongoDB. Lors de l’insertion, il n’est pas obligatoire pour l’utilisateur de fournir tous les champs dans la requête. Voyons maintenant comment fonctionne l’insertion lorsque certains champs ne sont pas spécifiés.
Insertion en bloc de documents MongoDB en spécifiant certains champs
> 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" : [ ]
})
>
Dans cet exemple, pour le deuxième document, le champ id n’est pas spécifié par l’utilisateur et pour le troisième document, seuls les champs id, nom et vitesse sont fournis dans la requête. La requête effectue une insertion réussie même si certains champs sont manquants dans les deuxième et troisième documents. La colonne nInserted indique que trois documents ont été insérés. Invoquez la méthode find et vérifiez les documents insérés.
> 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 }
>
Notez que l’id est automatiquement généré par MongoDB pour la voiture « Santro ». Pour l’id 8, seuls les champs nom et vitesse sont insérés.
Insertion de documents non ordonnés
Lors de l’insertion non ordonnée, si une erreur se produit à un certain point, MongoDB continue d’insérer les documents restants dans un tableau. Par exemple;
> 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" : [ ]
})
>
L’option ordered false est spécifiée dans la requête d’insertion, indiquant qu’il s’agit d’une collection non ordonnée. Exécutez 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 }
Les documents sont insérés et comme vous pouvez le voir, il s’agit d’une insertion non ordonnée. Si la méthode d’insertion rencontre une erreur, le résultat inclut le champ « WriteResult.writeErrors » indiquant le message d’erreur qui a causé l’échec.
Insertion de valeur d’id en double
> 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’erreur indique que nous insérons un document pour l’id 6 qui contient déjà un document et lance donc une erreur de clé en double pour une valeur d’id de 6.
Méthode Bulk.insert() de MongoDB
Cette méthode effectue une opération d’insertion en gros. Elle est introduite à partir de la version 2.6. La syntaxe est Bulk.insert(<document>)
. document : spécifie le document à insérer. Nous allons maintenant voir l’exemple d’insertion en vrac.
Insertion en vrac non ordonnée
> 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" : [ ]
})
>
Une liste non ordonnée nommée carbulk est créée et une requête d’insertion est spécifiée avec les champs et les valeurs à insérer. Notez qu’il est nécessaire d’appeler la méthode execute() après la dernière instruction d’insertion pour s’assurer que les données sont réellement insérées dans la base de données.
Insertion groupée ordonnée de MongoDB
Ceci est similaire à l’insertion groupée non triée, mais nous utilisons l’appel 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" : [ ]
})
Tout d’abord, nous créons une liste ordonnée de la collection de voitures appelée « carbulk1 », puis nous insérons les documents en invoquant la méthode execute().
Programme Java pour l’insertion groupée de MongoDB
Voyons un programme Java pour différentes opérations groupées, que nous avons vues jusqu’à présent en utilisant des commandes shell. Voici le programme Java pour l’insertion groupée en utilisant le pilote Java MongoDB 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 {
//méthode qui insère tous les documents
public static void insertmultipledocs() throws UnknownHostException{
//Obtenir une nouvelle connexion à la base de données en supposant qu'elle fonctionne
MongoClient mongoClient = new MongoClient("localhost");
////utiliser test comme base de données, utiliser votre base de données ici
DB db=mongoClient.getDB("test");
////récupérer l'objet collection, car est utilisé ici, utilisez le vôtre
DBCollection coll = db.getCollection("car");
//créer un nouvel objet
DBObject d1 = new BasicDBObject();
//données pour l'objet 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();
//données pour l'objet 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();
//données pour l'objet 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);
//créer une nouvelle liste
List docs = new ArrayList<>();
//ajouter d1, d2 et d3 à la liste docs
docs.add(d1);
docs.add(d2);
docs.add(d3);
//insérer la liste docs dans la collection
coll.insert(docs);
//stocke le résultat dans le curseur
DBCursor carmuldocs = coll.find();
//afficher le contenu du curseur
try {
while(carmuldocs.hasNext()) {
System.out.println(carmuldocs.next());
}
} finally {
carmuldocs.close();//close the cursor
}
}
//méthode qui insère des documents avec certains champs
public static void insertsomefieldsformultipledocs() throws UnknownHostException{
//Obtenir une nouvelle connexion à la base de données en supposant qu'elle fonctionne
MongoClient mongoClient = new MongoClient("localhost");
////utiliser test comme base de données, utiliser votre base de données ici
DB db=mongoClient.getDB("test");
////récupérer l'objet collection, car est utilisé ici, utilisez le vôtre
DBCollection coll = db.getCollection("car");
//créer l'objet d1
DBObject d1 = new BasicDBObject();
//insérer les données pour le nom, la couleur et la vitesse
d1.put("name","Indica");
d1.put("color", "Silver");
d1.put("cno", "H154");
DBObject d2 = new BasicDBObject();
//insérer les données pour l'id, le nom et la vitesse
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éthode qui vérifie les documents en double
public static void insertduplicatedocs() throws UnknownHostException{
//Obtenir une nouvelle connexion à la base de données en supposant qu'elle fonctionne
MongoClient mongoClient = new MongoClient("localhost");
////utiliser test comme base de données, utiliser votre base de données ici
DB db=mongoClient.getDB("test");
////récupérer l'objet collection, car est utilisé ici, utilisez le vôtre
DBCollection coll = db.getCollection("car");
DBObject d1 = new BasicDBObject();
//insérer les données en double de l'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éthode pour effectuer une liste non ordonnée en vrac
public static void insertbulkunordereddocs() throws UnknownHostException{
//Obtenir une nouvelle connexion à la base de données en supposant qu'elle fonctionne
MongoClient mongoClient = new MongoClient("localhost");
////utiliser test comme base de données, utiliser votre base de données ici
DB db=mongoClient.getDB("test");
////récupérer l'objet collection, car est utilisé ici, utilisez le vôtre
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);
//initialiser et créer un bloc en vrac non ordonné
BulkWriteOperation b1 = coll.initializeUnorderedBulkOperation();
//insérer d1 et d2 dans le bloc b1
b1.insert(d1);
b1.insert(d2);
//exécuter le bloc en vrac
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éthode qui effectue une insertion en vrac pour une liste ordonnée
public static void insertbulkordereddocs() throws UnknownHostException{
//Obtenir une nouvelle connexion à la base de données en supposant qu'elle fonctionne
MongoClient mongoClient = new MongoClient("localhost");
////utiliser test comme base de données, utiliser votre base de données ici
DB db=mongoClient.getDB("test");
////récupérer l'objet collection, car est utilisé ici, utilisez le vôtre
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);
//initialiser et créer un bloc en vrac ordonné
BulkWriteOperation b1 = coll.initializeOrderedBulkOperation();
b1.insert(d1);
b1.insert(d2);
//appeler 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{
//appeler toutes les méthodes pour effectuer l'opération d'insertion
insertmultipledocs();
insertsomefieldsformultipledocs();
insertbulkunordereddocs();
insertbulkordereddocs();
insertduplicatedocs();
}
}
Voici la sortie du programme ci-dessus.
{ "_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 vous utilisez le pilote Java MongoDB 3.x, utilisez le programme suivant.
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 {
// invoquer toutes les méthodes pour effectuer une opération d'insertion
insertmultipledocs();
insertsomefieldsformultipledocs();
insertduplicatedocs();
}
// méthode qui insère tous les documents
public static void insertmultipledocs() throws UnknownHostException {
// Obtenir une nouvelle connexion à la base de données en supposant qu'elle soit en cours d'exécution
MongoClient mongoClient = new MongoClient("localhost");
//// utiliser test comme base de données, utilisez votre base de données ici
MongoDatabase db = mongoClient.getDatabase("test");
//// récupérer l'objet de collection, "car" est utilisé ici, utilisez le vôtre
MongoCollection coll = db.getCollection("car");
// créer un nouvel objet
Document d1 = new Document();
// données de l'objet 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();
// données de l'objet 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();
// données de l'objet 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);
// créer une nouvelle liste
List docs = new ArrayList<>();
// ajouter d1, d2 et d3 à la liste docs
docs.add(d1);
docs.add(d2);
docs.add(d3);
// insérer la liste docs dans la collection
coll.insertMany(docs);
// stocke le résultat dans un curseur
FindIterable carmuldocs = coll.find();
for (Document d : carmuldocs)
System.out.println(d);
mongoClient.close();
}
// méthode qui insère des documents avec certains champs
public static void insertsomefieldsformultipledocs() throws UnknownHostException {
// Obtenir une nouvelle connexion à la base de données en supposant qu'elle soit en cours d'exécution
MongoClient mongoClient = new MongoClient("localhost");
//// utiliser test comme base de données, utilisez votre base de données ici
MongoDatabase db = mongoClient.getDatabase("test");
//// récupérer l'objet de collection, "car" est utilisé ici, utilisez le vôtre
MongoCollection coll = db.getCollection("car");
// créer l'objet d1
Document d1 = new Document();
// insérer les données pour le nom, la couleur et la vitesse
d1.put("name", "Indica");
d1.put("color", "Silver");
d1.put("cno", "H154");
Document d2 = new Document();
// insérer les données pour l'id, le nom et la vitesse
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éthode qui vérifie les documents en double
public static void insertduplicatedocs() throws UnknownHostException {
// Obtenir une nouvelle connexion à la base de données en supposant qu'elle soit en cours d'exécution
MongoClient mongoClient = new MongoClient("localhost");
//// utiliser test comme base de données, utilisez votre base de données ici
MongoDatabase db = mongoClient.getDatabase("test");
//// récupérer l'objet de collection, "car" est utilisé ici, utilisez le vôtre
MongoCollection coll = db.getCollection("car");
Document d1 = new Document();
// insérer des données en double pour 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’image ci-dessous montre un exemple d’exécution du programme Java d’insertion en masse de MongoDB ci-dessus. C’est tout pour l’insertion en masse dans MongoDB en utilisant le shell Mongo et le pilote Java, nous examinerons d’autres opérations MongoDB dans les prochains articles.
Source:
https://www.digitalocean.com/community/tutorials/mongodb-bulk-insert-insertmany