Ich versuche, Code aus dem alten MongoDB-Treiber auf die neueste Version zu migrieren. In der alten Version hatten wir so etwas wie diese:Suchen und Upsert mit dem Java-Treiber
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);
Wenn das ‚foo‘ Dokument dann nicht gäbe es geschaffen würde. Wenn es vorhanden wäre, würde der Wert von seq erhöht werden.
Von dem, was ich feststellen kann, das Gleiche zu tun mit MongoCollection Ich brauche replaceOne zu verwenden und etwas zu tun, wie folgt aus:
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);
aber das gibt java.lang.IllegalArgumentException: Ungültige BSON Feldname $ inc
Das hat funktioniert - danke. Ich hatte früher versucht, findOneAndUpdate zu verwenden, aber ich hatte diese Optionen nicht; Das war der Ausschlag. –