Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java MongoTemplate-自动增量_Java_Mongodb - Fatal编程技术网

Java MongoTemplate-自动增量

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)实现同样的

我试图在MongoDb中实现一个自动递增列
我关注这篇文章:
他说要在服务器上创建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);