sql >> Databáze >  >> NoSQL >> MongoDB

Automatické zvýšení sekvence v mongodb pomocí Java

Pomocí Create a Auto-Incrementing Sequence Field nejprve byste měli vytvořit kolekci pomocí shellu mongoDB a kolekce by měla vypadat takto:

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

Získáte tak counters kolekce, které obsahují pole jako _id,seq , nyní vytvořte getNextSequence funkce v jazyce Java a tato funkce s parametrem userid jako řetězec tak getNextSequence fungovat takto:

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

}

Výše uvedená funkce vrací seq počítat a použít tuto funkci v main metoda jako:

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
}

Nyní v counters kolekce obsahuje tři dokumenty, které obsahují name jako Sarah C. and Bob D. respektive jeden výchozí dokument, který jsme vložili ručně poprvé a jeho inkrementace seq takto { "_id" : "userid", "seq" : 2 }



  1. Programově aktualizujte pole v Mongo a Meteor

  2. Jak zkontrolovat nulu/null v Redis' Lua cjson?

  3. Vícenásobný klíč ukazující na jednu hodnotu v Redis (Cache) s javou

  4. MongoDB $ ln