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

Я переключаюсь на MongoDB Java драйвер версии 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

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

3 ответа

Решение

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

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 Driver

В Java-драйвере Mongodb 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));

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

coll.findOneAndReplace(doc1, doc2);
Другие вопросы по тегам