J'utilise MongoDB dans mon application et je devais insérer plusieurs documents dans 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
Insertion en vrac de plusieurs documents Section
Où l'auteur passait un tableau pour ce faire.
Quand j'ai essayé la même chose, mais pourquoi cela ne le permet pas, et 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();
}
}
}
Veuillez me faire savoir comment procéder pour que je puisse insérer plusieurs documents à la fois via Java.
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 chaînes.
Vous devez remplir manuellement les documents (DBObject
s), les insérer dans un List<DBObject>
ou un tableau de DBObject
s et éventuellement insert
eux.
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., vous pouvez utiliser
MongoDatabase database = mongoClient.getDatabase("yourDB");
MongoCollection<Document> collection = database.getCollection("yourCollection");
collection.insertMany(yourDocumentList);
À partir de la version MongoDB 2.6 et 2.12 du pilote, vous pouvez également effectuer une opération d'insertion en bloc . Dans Java vous pouvez utiliser BulkWriteOperation . Un exemple d'utilisation de ceci pourrait être:
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();
Il existe deux commandes principales pour créer des documents dans MongoDB:
insertOne()
insertMany()
Il existe également d'autres méthodes telles que les commandes Update
. Nous appelons ces opérations des bouleversements. Les renversements se produisent lorsqu'il n'y a aucun document qui correspond au sélecteur utilisé pour identifier les documents.
Bien que MongoDB insère l'ID par ses propres moyens, nous pouvons également insérer manuellement des ID personnalisés en spécifiant le paramètre _id
Dans les fonctions insert...()
.
Pour insérer plusieurs documents, nous pouvons utiliser insertMany()
- qui prend un tableau de documents comme paramètre. Une fois exécuté, il renvoie plusieurs id
s pour chaque document du tableau. Pour supprimer la collection, utilisez la commande drop()
. Parfois, lors de l'insertion en bloc - nous pouvons insérer des valeurs en double. Plus précisément, si nous essayons d'insérer des _id
En double, nous obtiendrons le duplicate key error
:
db.startup.insertMany ( {_id: "id1", nom: "Uber"}, {_id: " id2 ", nom:" Airbnb "}, {_id:" id1 ", nom:" Uber "}, );
MongoDB arrête d'insérer l'opération, s'il rencontre une erreur, pour supprimer cela - nous pouvons fournir le paramètre ordered:false
. Ex:
db.startup.insertMany ( {_ id: "id1", nom: "Uber"}, {_ id: " id2 ", nom:" Airbnb "}, {_ id:" id1 ", nom:" Airbnb "}, , {ordonné: faux} );
Votre format d'enregistrement d'insertion comme dans MongoDB qui interroge se retire de n'importe quel EG source.
{
"_id" : 1,
"name" : a
}
{
"_id" : 2,
"name" : b,
}
c'est mongodb 3.
FindIterable<Document> resulutlist = collection.find(query);
List docList = new ArrayList();
for (Document document : resulutlist) {
docList.add(document);
}
if(!docList.isEmpty()){
collectionCube.insertMany(docList);
}