使用创建自增序列字段方法,首先你需要在 MongoDB Shell 中创建一个符合以下规范的集合:
db.counters.insert(
{
_id: "userid",
seq: 0
})
你会得到一个包含字段如 _id, seq
的计数器集合,现在在 Java 中创建名为 getNextSequence
的函数,并且该函数有一个字符串类型的参数 userid
,因此 getNextSequence
函数如下:
public static Object getNextSequence(String name) throws Exception{
MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
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
的数量,并在主方法中使用该函数,如下所示:
public static void main(String[] args) throws Exception {
MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
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);
document.put("_id", getNextSequence("userid"));
document.put("name", "Bob D.");
collection.insert(document);
}
现在在 counters
集合中包含三个文档,这些文档分别包含名称为 Sarah C. 和 Bob D.
的 name
,以及我们在第一次手动插入时增加了 seq
的一个默认文档,如下所示: {"_id": "userid", "seq": 2}