3

我创建了一个“序列”集合。它有“名称”和“计数器”字段。“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/,但是,我想知道有什么问题用这段代码。

4

1 回答 1

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))
于 2012-09-13T01:52:58.963 回答