使用Java 3驱动程序的MongoDB更新

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (141)

我正在切换到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
提问于
用户回答回答于

使用:

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驱动程序

用户回答回答于

在Mongodb Java 3.0驱动程序中,当您更新文档时,您可以调用coll.replaceOne方法来替换文档,或者使用$ set / $ setOnInsert / etc调用coll.updateOne / coll.updateMany方法来更新文档运营商。

在你的情况下,你可以尝试:

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

扫码关注云+社区

领取腾讯云代金券