Я создал коллекцию «sequence». Он имеет поля «имя» и «счетчик». Поле «name» установлено в поле «Tag» и «counter» равно 0. Ниже приведен код внутри метода, который возвращает следующее значение поля «counter».Создание/обновление последовательностей - MongoDB
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) и проверить, что на самом деле отправляется на сервер, когда этот код выполняется? – jyemin
Я выполнил код с чистым java-драйвером, с которым вы связались, и посмотрите это в журналах, работающих с mongod -v: Ср июн 20 19:41:33 [conn3] запустить командный тест. $ Cmd {findandmodify: "seq", query : {_id: "seq1"}, update: {$ inc: {seq: 1}}, new: true, upsert: true} Wed Jun 20 19:41:33 [conn3] query test.seq query: {_id : "seq1"} ntoreturn: 1 idhack: 1 reslen: 48 0ms Wed Jun 20 19:41:33 [conn3] update test.seq query: {_id: "seq1"} update: {$ inc: {seq: 1 }} idhack: 1 0ms – jyemin
Я не совсем понял из этих журналов, что именно происходит. – devang