Обновление 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);