2014-11-10 6 views
0

Я пытаюсь реализовать столбец автоматического приращения в MongoDb
Я следую этой статье: mongodb_autoincrement_sequence
Он сказал, что для создания функции Java Script на сервере:MongoTemplate - автоинкремент

function getNextSequenceValue {some logic reading from a Sequence} 

затем вызывающему он при вставке документа как так:

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

Как я сделать то же самое с помощью рамки Java (Spring и mongoTemplate)?
Я пытался добавить вызов document.put (newDocument.id «getNextSequenceValue ...»
Но она сохранит фактическую строку «getNextSequenceValue ...» в БД и не будет генерировать ID

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

** пример ** в JavaScript только потому, что это язык 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); 
Смежные вопросы