您的位置:首页 > 数据库 > Mongodb

MongoDB自增长ID的实现

2014-12-24 10:27 253 查看
原文链接: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 }

用起来还挺方便。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: