Java驱动程序MongoDB updateone

时间:2016-08-02 00:42:25

标签: java mongodb

我有一个类MongoDAO,它具有以下基本Mongo CRUD操作的代码。我在使用collection.updateOne方法的代码中的行没有编译并抛出错误“ MongoCollection类型中的方法updateOne(Bson,Bson)不适用于参数(Document)” 。我需要传递ToolThing类型的对象并使用该对象更新mongodb上的现有文档。如何在不必参考对象ToolThing的各个参数的情况下解决此问题?

private String mongoDB;
private String mongoCollection;
private List<ToolThing> tools;
private ToolThing tool;

MongoClient mongoClient = new MongoClient();
MongoDatabase db = mongoClient.getDatabase("test");
MongoCollection collection = db.getCollection("tools");

public void updateOne(ToolThing input){
    try {
        JSONObject jsonObject = new JSONObject(input);
        String inputJson = jsonObject.toString();
        Document inpDoc = Document.parse(inputJson);
        collection.updateOne(new Document(inpDoc));
    } catch (Exception e) {
        System.out.println("Mongo Deletion operation failed");
        e.printStackTrace();
    }

}

1 个答案:

答案 0 :(得分:4)

是的,您将获得该异常,因为MongoCollection.updateOne应该有两个参数,第一个参数是查找需要更新的文档的条件,第二个参数是实际更新。

参考以下帖子中给出的例子。

https://docs.mongodb.com/getting-started/java/update/

MongoDB update using Java 3 driver