Java MongoTemplate-自动增量
我试图在MongoDb中实现一个自动递增列Java MongoTemplate-自动增量,java,mongodb,Java,Mongodb,我试图在MongoDb中实现一个自动递增列 我关注这篇文章: 他说要在服务器上创建java脚本函数: function getNextSequenceValue {some logic reading from a Sequence} 然后在插入文档时调用它,如下所示: >db.products.insert({ "_id":getNextSequenceValue("productid") ... 如何使用java框架(Spring和mongoTemplate)实现同样的
我关注这篇文章:
他说要在服务器上创建java脚本函数:
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);
最终使用了
这个例子是用JavaScript编写的,因为这是mongodb shell的语言。你不能在服务器上这样做(当然你不应该这样做)。你应该在Java代码中实现这个逻辑。
// 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);