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 }