MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Séquence d'incrémentation automatique dans mongodb en utilisant Java

En utilisant Créer un champ de séquence à incrémentation automatique, vous devez d'abord créer une collection à l'aide du shell mongoDB et la collection doit être la suivante :

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

Ainsi, vous obtenez des counters collections qui contiennent un champ comme _id,seq , créez maintenant getNextSequence fonction en java et cette fonction ayant le paramètre userid sous forme de chaîne donc getNextSequence fonctionner comme ceci :

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

}

La fonction ci-dessus renvoie seq compter et utilisé cette fonction dans main méthode comme suit :

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
}

Maintenant dans les counters la collection contient trois documents contenant name comme Sarah C. and Bob D. respectivement et un document par défaut que nous avons inséré manuellement la première fois et qui incrémente seq comme ceci { "_id" : "userid", "seq" : 2 }