【发布时间】:2012-06-17 01:10:19
【问题描述】:
我创建了一个“序列”集合。它有“名称”和“计数器”字段。 “name”字段设置为“Tag”,“counter”字段设置为 0。以下是返回“counter”字段下一个值的方法中的代码。
final Sequence tagSequence = mongoTemplate.findAndModify(
new Query(Criteria.where("name").is("Tag")),
new Update().inc("counter", 1),
new FindAndModifyOptions().returnNew(true), Sequence.class);
但是,这段代码不起作用。有输入吗?
我在这里找到了一个实现,http://dev.bubblemix.net/blog/2011/04/auto-increment-for-mongodb-with-the-java-driver/,但是,我想知道这段代码有什么问题。
【问题讨论】:
-
您能否提高 mongod 服务器上的日志级别(例如 mongod -vvv)并检查执行此代码时实际发送到服务器的内容?
-
我执行了您链接到的纯 Java 驱动程序代码,并在运行 mongod -v 的日志中看到了这一点: Wed Jun 20 19:41:33 [conn3] run command test.$cmd { findandmodify: “seq”,查询:{_id:“seq1”},更新:{$inc:{seq:1}},新:true,upsert:true}星期三6月20日19:41:33 [conn3]查询test.seq查询:{_id:“seq1”}ntoreturn:1 idhack:1 reslen:48 0ms Wed Jun 20 19:41:33 [conn3]更新test.seq查询:{_id:“seq1”}更新:{$inc:{ seq: 1 } } idhack:1 0ms
-
从这些日志中我不太明白到底发生了什么。
-
您链接的代码正常工作,日志显示服务器上发生的情况。您应该将此与运行代码时在日志中看到的内容进行比较,以确定有什么区别。
标签: java mongodb spring-data database