我创建了一个'序列'采集。它有' name'和'反击'领域。这个名字'字段设置为'标记'和'反击'字段设置为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/但是,我想知道这段代码有什么问题。
答案 0 :(得分:4)
如果您在MongoDB中首先使用“Tag”名称保存了Sequence对象,则代码可以正常工作。我建议您使用name
注释对@Id
字段进行注释。例:
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))