Comment insérer plusieurs documents à la fois en MongoDB via Java
J'utilise MongoDB dans mon application et il était nécessaire d'insérer plusieurs documents à l'intérieur d'une collection MongoDB . La version que j'utilise est de 1,6
j'ai vu un exemple ici
http://docs.mongodb.org/manual/core/create/
dans le
En Vrac Insérer Plusieurs Documents
où l'auteur passait un tableau pour le faire .
Quand j'ai essayé la même chose , mais pourquoi il ne permet pas , et s'il vous plaît dites-moi Comment puis-je insérer plusieurs documents à la fois ??
package com;
import java.util.Date;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.MongoClient;
public class App {
public static void main(String[] args) {
try {
MongoClient mongo = new MongoClient("localhost", 27017);
DB db = mongo.getDB("at");
DBCollection collection = db.getCollection("people");
/*
* BasicDBObject document = new BasicDBObject();
* document.put("name", "mkyong"); document.put("age", 30);
* document.put("createdDate", new Date()); table.insert(document);
*/
String[] myStringArray = new String[] { "a", "b", "c" };
collection.insert(myStringArray); // Compilation error at this line saying that "The method insert(DBObject...) in the type DBCollection is not applicable for the arguments (String[])"
} catch (Exception e) {
e.printStackTrace();
}
}
}
s'il vous Plaît laissez-moi savoir quel est le moyen pour que je puisse insérer plusieurs documents à la fois par le biais de java .
5 réponses
DBCollection.insert
accepte un paramètre de type DBObject
,List<DBObject>
ou un tableau de DBObject
s pour insérer plusieurs documents à la fois. Vous passez dans un tableau de corde.
Vous devez remplir manuellement les documents(DBObject
s), insérez-les à un List<DBObject>
ou un tableau de DBObject
s et éventuellement insert
.
DBObject document1 = new BasicDBObject();
document1.put("name", "Kiran");
document1.put("age", 20);
DBObject document2 = new BasicDBObject();
document2.put("name", "John");
List<DBObject> documents = new ArrayList<>();
documents.add(document1);
documents.add(document2);
collection.insert(documents);
l'extrait ci-dessus est essentiellement le même que la commande que vous émettriez dans le shell MongoDB:
db.people.insert( [ {name: "Kiran", age: 20}, {name: "John"} ]);
Avant 3.0, vous pouvez utiliser le code ci-dessous en Java
DB db = mongoClient.getDB("yourDB");
DBCollection coll = db.getCollection("yourCollection");
BulkWriteOperation builder = coll.initializeUnorderedBulkOperation();
for(DBObject doc :yourList)
{
builder.insert(doc);
}
BulkWriteResult result = builder.execute();
return result.isAcknowledged();
Si vous utilisez mongodb version 3.0 , vous pouvez utiliser
MongoDatabase database = mongoClient.getDatabase("yourDB");
MongoCollection<Document> collection = database.getCollection("yourCollection");
collection.insertMany(yourDocumentList);
A partir de la version 2.6 et 2.12 du pilote, vous pouvez aussi maintenant faire un opération d'insertion en bloc. En Java, vous pouvez utiliser le BulkWriteOperation. Un exemple d'utilisation de ce pourrait être la suivante:
DBCollection coll = db.getCollection("user");
BulkWriteOperation bulk = coll.initializeUnorderedBulkOperation();
bulk.find(new BasicDBObject("z", 1)).upsert().update(new BasicDBObject("$inc", new BasicDBObject("y", -1)));
bulk.find(new BasicDBObject("z", 1)).upsert().update(new BasicDBObject("$inc", new BasicDBObject("y", -1)));
bulk.execute();
Création De Documents
il y a deux commandes principales pour créer des documents en MongoDB:
insertOne()
insertMany()
Il y a d'autres moyens tels que Update
commandes. Nous appelons ces opérations, upserts. Upserts se produit quand il n'y a pas de documents qui correspondent à la sélecteur utilisé pour identifier les documents.
bien que MongoDB insère ID par son propre, nous pouvons insérer manuellement custom Id ainsi en spécifiant _id
paramètre insert...()
fonctions.
Pour insérer plusieurs documents, nous pouvons utiliser insertMany()
- qui prend un tableau de documents comme paramètre. Lorsqu'il est exécuté, il retourne plusieurs id
s pour chaque document du tableau. Pour supprimer la collection, utilisez drop()
la commande. Parfois, en faisant des inserts en vrac - nous pouvons insérer des valeurs dupliquées. Plus précisément, si nous essayons d'insérer dupliquer _id
s, nous allons obtenir la duplicate key error
:
db.startup.insertMany( [ {_id:"id1", name:"Uber"}, {_id:"id2", name:"Airbnb"}, {_id:"id1", name:"Uber"}, ] );
MongoDB arrête d'insérer l'opération, si elle rencontre une erreur, pour supprimer que - nous pouvons fournir ordered:false
paramètre. Ex:
db.startup.insertMany( [ {_id:"id1", name:"Uber"}, {_id:"id2", name:"Airbnb"}, {_id:"id1", name:"Airbnb"}, ], {ordered: false} );
votre insert enregistrer le format comme dans MongoDB que la requête retirer de n'importe quelle source Par exemple.
{
"_id" : 1,
"name" : a
}
{
"_id" : 2,
"name" : b,
}
c'est mongodb 3.0
FindIterable<Document> resulutlist = collection.find(query);
List docList = new ArrayList();
for (Document document : resulutlist) {
docList.add(document);
}
if(!docList.isEmpty()){
collectionCube.insertMany(docList);
}