2014-11-10 4 views
0

내가이 글을 다음입니다 MongoDB를 에
를 자동 증가 열을 구현하기 위해 노력하고 있습니다 :MongoTemplate - 자동 증가

function getNextSequenceValue {some logic reading from a Sequence} 

다음 호출 : 그는 서버에 자바 스크립트 함수가 생성했다 mongodb_autoincrement_sequence
문서를 이렇게 삽입 할 때 :

>db.products.insert({ 
    "_id":getNextSequenceValue("productid") 
    ... 

어떻게하면 자바 프레임 워크 (Spring 및 mongoTemplate)를 사용하여 동일한 작업을 수행 할 수 있습니까?
나는 "... getNextSequenceValue"(newDocument.id을 document.put에 대한 호출을 추가
을 시도하고 있었다 그러나 실제 문자열이 저장됩니다 "getNextSequenceValue을 ..."는 DB와 ID를 생성하지 않습니다

DBCollection collection = mongoTemplate.getCollection(DbCollections.employee); 
    document.put(newDocument.id,"getNextSequenceValue(" +DbSequences.docSeqId + ")");  
    WriteResult result = collection.save(document); 
+0

를 사용하여 끝난 ** 예 ** 즉, MongoDB의 쉘의 언어 그냥 있기 때문에 자바 스크립트입니다. 당신은 (잘은 안) 서버에서이 작업을 수행 할 수 없습니다. 당신을 Java 코드에서 해당 논리를 구현하기위한 것입니다. –

답변

0

this

// connect to MongoDB server. 
Mongo mongo = new Mongo("localhost", 27017); 
DB database = mongo.getDB("mydb"); 
DBCollection collection = database.getCollection("testCollection"); 

// create a simple db object where counter value is 0 
DBObject temp = new BasicDBObject("name", "someName").append("counter", 0); 

// insert it into the collection 
collection.insert(temp); 

// create an increment query 
DBObject modifier = new BasicDBObject("counter", 1); 
DBObject incQuery = new BasicDBObject("$inc", modifier); 

// create a search query  
DBObject searchQuery = new BasicDBObject("name", "someName"); 

// increment a counter value atomically 
WriteResult upRes = collection.update(searchQuery, incQuery);