본문 바로가기
  • AI (Artificial Intelligence)
Industry 4.0/Big Data

[MongoDB] MongoDB 에서 Sequence 사용하기

by 로샤스 2014. 10. 7.
시퀀스를 임의 생성하여 사용하는 방법입니다.

1. 시퀀스 용 Collection 생성
>db.createCollection("seq", {crapped: false });

2. 시퀀스 등록
>db.seq.insert({"_id":"seq_post", "seq":new NumberLong(1)});

 ( seq 값으로 1 대신에 NumberLong 값으로 넣길 바란다. ( float 형으로 처리됨을 방지 ) )

3. 시퀀스 가져오기
>db.seq.findAndModify({    query: {"_id":"seq_post"},    update: {$inc: {"seq":1}},    new: true});


이렇게 해서 "seq_post" 의 시퀀스를 가져오게 된다.


이렇게 되어있는것을 java 에서는 어떻게 가져올수 있을까?
spring-data-mongodb-1.0.0.M3.jar 를 사용하는 환경에서의 Sequece 가져오기 입니다.

/**
* 시퀀스 발급
* @param seqName
* @return
*/
public Double getSequence(String seqName){
MongoOperations mo = (MongoOperations)mongoTpl;
DBCollection coll = mo.getCollection("seq");
BasicDBObject queryObj = new BasicDBObject();
queryObj.append("_id", seqName);
BasicDBObject updateObj = new BasicDBObject();
BasicDBObject incObj = new BasicDBObject();
incObj.put("seq", 1);
updateObj.put("$inc", incObj);
DBObject result = coll.findAndModify(queryObj, updateObj);
Double seq = (Double)result.get("seq");
return seq;
}
spring-data-mongodb 를 사용하지 않을 경우에는 

Mongo m = new Mongo("58.226.93.246", 27017);
DB db = m.getDB("[DB명]");
DBCollection coll = db.getCollection("seq");
이런 과정으로 DBCollection 을 얻어와 작업을 하면 되겠습니다.





















출처 : http://blog.naver.com/endstar7/100134889683




















댓글