sql >> Databasteknik >  >> NoSQL >> MongoDB

Automatisk ökningssekvens i mongodb med java

Genom att använda Skapa ett automatiskt ökande sekvensfält bör du först skapa en samling med mongoDB-skalet och samlingen ska vara som:

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

Så du får counters samlingar som innehåller fält som _id,seq , skapa nu getNextSequence funktion i java och denna funktion har parametern userid som sträng så getNextSequence fungerar så här :

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

}

Ovanstående funktion returnerar seq räkna och använde den här funktionen i main metod som :

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
}

Nu i counters samlingen innehåller tre dokument som innehåller name som Sarah C. and Bob D. respektive ett standarddokument som vi infogade manuellt första gången och det ökar seq så här { "_id" : "userid", "seq" : 2 }



  1. Vänta på återuppringning av asynkronfunktion i den senaste stream.on('data')-händelsen

  2. Hur kan jag lägga till ett unikt id med två kolumner till mongodb i en meteorapp?

  3. Några detaljerade och specifika skäl till varför MongoDB är mycket snabbare än SQL DB?

  4. Sammansatta frågor med Redis