MongoDB自增长ID的实现

来源:互联网 发布:淘宝vip钻石卡 编辑:程序博客网 时间:2024/05/16 17:36

原文链接:http://duoyun.org/topic/50caa33fee680fee79000c82


这个大神用了不同的语言实现,我只写下java的demo,但是思想都是一样的。


MongoDB中有时候会需要自增长id,而不是他自维护的id,这样方便逻辑实现。


他的思想是利用mongodb中$inc操作,这个操作可以自增加1,并且是原子性操作,线程安全。


一开始的思想是利用java把javascript代码执行到mongodb中,再调用js function获取返回值。可是网上查的貌似没有这种方法。


于是就利用javaapi自带的方法。具体代码如下:


public static Object autoIncre(DB db, String seq){DBCollection auto = db.getCollection(seq) ;BasicDBObject query = new BasicDBObject() ;query.put("_id", "auto_increment_id") ;BasicDBObject increment = new BasicDBObject("next", 1) ;BasicDBObject update = new BasicDBObject("$inc", increment) ;DBObject result = auto.findAndModify(query, new BasicDBObject(), new BasicDBObject(), false, update, true, true) ;double x = Double.valueOf(result.get("next").toString()) ;return x ;}


mongodb里面的结构是这样:

> db.auto_id.find() ;
{ "_id" : "auto_increment_id", "next" : 1 }


用起来还挺方便。


0 0