创建/更新序列 - MongoDB

时间:2012-06-17 01:10:20

标签: java mongodb spring-data database

我创建了一个'序列'采集。它有' 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/但是,我想知道这段代码有什么问题。

1 个答案:

答案 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))