我正在尝试将代码从旧版MongoDB驱动迁移到最新版本。 在旧版中,我们有类似以下这样的代码:
BasicDBObject query = new BasicDBObject("foo", "foo");
int value = 1;
BasicDBObject field = new BasicDBObject("seq", value);
BasicDBObject update = new BasicDBObject("$inc", field);
DBObject o = getDBCollection().findAndModify(query, null, null, false, update, true, true);
如果“foo”文档不存在,则会创建它。如果存在,则seq的值将递增。
据我所知,使用MongoCollection完成相同的操作需要使用replaceOne并执行以下操作:
Document query = new Document("foo", "foo");
int value = 1;
Document field = new Document("seq", value);
Document update = new Document("$inc", field);
UpdateOptions options = new UpdateOptions().upsert(true);
UpdateResult ret = getMongoCollection().replaceOne(query, update, options);
但是这会导致java.lang.IllegalArgumentException: 无效的BSON字段名$inc。