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 }