Обновление MongoDB с использованием драйвера Java 3

Я перехожу к драйверу Java MongoDB версии 3. Я не могу понять, как выполнить обновление документа. Например, я хочу изменить "возраст" пользователя:

MongoDatabase db = mongoClient.getDatabase("exampledb");
MongoCollection<org.bson.Document> coll = db.getCollection("collusers");

Document doc1 = new Document("name", "frank").append("age", 55) .append("phone", "123-456-789");
Document doc2 = new Document("name", "frank").append("age", 33) .append("phone", "123-456-789");
coll.updateOne(doc1, doc2); 

Вывод:

java.lang.IllegalArgumentException: Invalid BSON field name name

Есть идея, как это исправить? Спасибо!

Ответы

Ответ 1

Использование:

coll.updateOne(eq("name", "frank"), new Document("$set", new Document("age", 33)));

для обновления первого найденного документа. Для нескольких обновлений:

coll.updateMany(eq("name", "frank"), new Document("$set", new Document("age", 33)));

В этой ссылке вы можете сэкономить краткую ссылку на драйвер MongoDB Java 3

Ответ 2

в утилите Mongodb Java 3.0 при обновлении документа вы можете вызвать метод coll.replaceOne для замены документа или вызвать метод coll.updateOne/coll.updateMany для обновления документов (ов) с помощью $set/$setOnInsert/etc.

в вашем случае вы можете попробовать:

coll.updateOne(eq("name", "frank"), new Document("$set", new Document("age", 33)));
coll.replaceOne(eq("name", "frank"), new Document("age", 33));

Ответ 3

Вы можете попробовать это

coll.findOneAndReplace(doc1, doc2);