我创建了一个“序列”集合。它有“名称”和“计数器”字段。 “名称”字段设置为“标记”,“计数器”字段设置为 0。以下是返回“计数器”字段的下一个值的方法中的代码。
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/但是,我想知道这段代码有什么问题。
最佳答案
如果您首先使用“Tag”名称在 MongoDB 中保存了 Sequence 对象,则您的代码可以正常工作。我建议您使用 @Id
注释对 name
字段进行注释。例如:
public class Sequence {
@Id
protected final String name;
protected Long counter;
public Sequence(String name, Long counter) {
this.name = name;
this.counter = counter;
}
public String getName() {
return name;
}
public Long getCounter() {
return counter;
}
public void setCounter(Long counter) {
this.counter = counter;
}
}
在 MongoDB 中保存对象:
template.save(new Sequence("Tag",0L))
关于java - 创建/更新序列 - MongoDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11068201/