tutorial - So fügen Sie mehrere Dokumente gleichzeitig in MongoDB über Java ein




jtextfield (4)

Dokumente erstellen

Es gibt zwei Hauptbefehle zum Erstellen von Dokumenten in MongoDB:

  • insertOne()
  • insertMany()

Es gibt auch andere Möglichkeiten wie Update Befehle. Wir nennen diese Operationen Upserts. Upserts treten auf, wenn keine Dokumente vorhanden sind, die mit dem Selektor übereinstimmen, der zum Identifizieren von Dokumenten verwendet wird.

Obwohl MongoDB eigene IDs einfügt, können wir benutzerdefinierte IDs auch manuell einfügen, indem _id Parameter _id in den Funktionen insert...() _id .

Um mehrere Dokumente einzufügen, können wir insertMany() - was ein Array von Dokumenten als Parameter annimmt. Bei der Ausführung werden mehrere id für jedes Dokument im Array zurückgegeben. Um die Sammlung zu löschen, verwenden Sie den Befehl drop() . Manchmal, wenn Masseneinfügungen vorgenommen werden, können wir doppelte Werte einfügen. Insbesondere wenn wir versuchen, doppelte _id s einzufügen, erhalten wir den duplicate key error :

db.startup.insertMany(
  [
  {_id:"id1", name:"Uber"},
  {_id:"id2", name:"Airbnb"},
  {_id:"id1", name:"Uber"},
  ]
  );

MongoDB beendet das Einfügen der Operation, falls ein Fehler auftritt, um dies zu unterdrücken - wir können ordered:false Parameter liefern. Ex:

db.startup.insertMany(
[
{_id:"id1", name:"Uber"},
{_id:"id2", name:"Airbnb"},
{_id:"id1", name:"Airbnb"},
],
{ordered: false}
);

Ich verwende MongoDB in meiner Anwendung und musste mehrere Dokumente in eine MongoDB-Sammlung einfügen. Die Version, die ich verwende, ist 1.6

Ich habe hier ein Beispiel gesehen

http://docs.mongodb.org/manual/core/create/

in dem

Masseneinfügung mehrerer Dokumente Abschnitt

Wo der Autor ein Array übergeben hat, um dies zu tun.

Als ich das gleiche probiert habe, aber warum es nicht erlaubt ist, und bitte sag mir wie kann ich mehrere Dokumente gleichzeitig einfügen ??

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();
        }

    }

}

Bitte lassen Sie mich wissen, wie es geht, damit ich mehrere Dokumente gleichzeitig über Java einfügen kann.


Ab Version MongoDB 2.6 und 2.12 des Treibers können Sie jetzt auch einen Masseneinfügevorgang durchführen . In Java können Sie die BulkWriteOperation . Ein Beispiel dafür könnte sein:

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();

Vor 3.0 können Sie den folgenden Code in Java verwenden

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();

Wenn Sie mongodb Version 3.0 verwenden , können Sie verwenden

MongoDatabase database = mongoClient.getDatabase("yourDB");
            MongoCollection<Document> collection = database.getCollection("yourCollection");
            collection.insertMany(yourDocumentList);

DBCollection.insert akzeptiert einen Parameter vom Typ DBObject , List<DBObject> oder ein Array von DBObject s zum Einfügen mehrerer Dokumente gleichzeitig. Sie übergeben ein String-Array.

Sie müssen Dokumente ( DBObject s) manuell DBObject , sie in ein List<DBObject> oder ein Array von DBObject s insert und schließlich 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);

Das obige Snippet entspricht im Wesentlichen dem Befehl, den Sie in der MongoDB-Shell ausgeben würden:

db.people.insert( [ {name: "Kiran", age: 20}, {name: "John"} ]);




mongodb-java