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