首先使用Create an Auto-Incrementing Sequence Field,您应该使用mongoDB shell 创建集合,集合应该是:
db.counters.insert(
{
_id: "userid",
seq: 0
})
所以你得到了包含_id,seq 之类的字段的counters 集合,现在在java 中创建getNextSequence 函数,这个函数有参数userid 作为字符串所以getNextSequence 函数是这样的:
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");
}
上述函数返回seq计数并在main方法中使用此函数,如下:
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
}
现在在counters 集合中包含三个文档,分别包含name 作为Sarah C. and Bob D. 和一个我们第一次手动插入的默认文档,它增加seq 像这样{ "_id" : "userid", "seq" : 2 }