MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Automatische Inkrementsequenz in Mongodb mit Java

Wenn Sie „Create an Auto-Incrementing Sequence Field“ verwenden, sollten Sie zuerst eine Sammlung mit der MongoDB-Shell erstellen, und die Sammlung sollte wie folgt aussehen:

db.counters.insert(
{
  _id: "userid",
  seq: 0
})

Sie erhalten also counters Sammlungen, die Felder wie _id,seq enthalten , erstellen Sie nun getNextSequence Funktion in Java und diese Funktion mit dem Parameter userid als String also getNextSequence funktionieren so:

public static Object getNextSequence(String name) throws Exception{
    MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
    // Now connect to your databases
    DB db = mongoClient.getDB("demo");
    DBCollection collection = db.getCollection("counters");
    BasicDBObject find = new BasicDBObject();
    find.put("_id", name);
    BasicDBObject update = new BasicDBObject();
    update.put("$inc", new BasicDBObject("seq", 1));
    DBObject obj =  collection.findAndModify(find, update);
    return obj.get("seq");

}

Die obige Funktion gibt seq zurück count und verwendete diese Funktion in main Methode wie :

public static void main(String[] args) throws Exception {

    MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
    // Now connect to your databases
    DB db = mongoClient.getDB("demo");
    DBCollection collection = db.getCollection("counters");
    BasicDBObject document = new BasicDBObject();

    document.put("_id", getNextSequence("userid"));
    document.put("name","Sarah C.");
    collection.insert(document); // insert first doc

    document.put("_id", getNextSequence("userid"));
    document.put("name", "Bob D.");
    collection.insert(document); // insert second doc
}

Jetzt in counters Die Sammlung enthält drei Dokumente, die name enthalten als Sarah C. and Bob D. jeweils und ein Standarddokument, das wir beim ersten Mal manuell eingefügt haben, und es erhöht seq so { "_id" : "userid", "seq" : 2 }