使用 Java Driver 3.4 将数据附加到 MongoDB-Document 中的数组

appending data to array in MongoDB-Document using Java Driver 3.4

我正在使用 MongoDB Java Driver 3.4 并想更新 Mongo-DB 集合中的文档(ID 为“12”)。目前,文档如下所示:

{"id" : "12", "Data" : [{"Author" : "J.K. Rowling", 
                              "Books" : {"Harry Potter 1" : ".99", "Harry Potter 2" : ".49", "Harry Potter 3" : ".49"}},
                             {"Author" : "Philip Roth", 
                              "Books" : {"American Pastoral" : ".99", "The Human Stain" : ".49", "Indignation" : ".49"}}
                            ]}

我想通过将以下对象添加到数组 "Data" 来更新此文档:

{"Author" : "Stephen King", "Books" : {"Rose Red" : ".69", "Faithful" : ".49", "Throttle" : ".49"}}

为此我写了下面的java代码:

Document doc = new Document().append("Author", "Stephen King")
                             .append("Data", new Document("Rose Red", ".69")
                                            .append("Faithful" : ".49")
                                            .append("Throttle" : ".49"));                                                                                     

collection.update({"id", "12"}, {$push: {"Data" : doc.toJson()}});

IDE 通过向我展示以下内容表明最后一个语句 (collection.update...) 有问题:

我不知道这条错误消息应该告诉我什么。语句末尾有一个分号。有人知道 java 代码有什么问题吗?

P.S.: 这不是重复 (MongoDB Java) $push into array 我的问题与 Java Driver 3.4 有关。另一个问题涉及完全不同的早期版本 类.

这里有几处不正确的地方。

字段 - 从 Data 更改为 Books

分隔符 - 从 semicolon 更改为 comma

方法 - 由update改为updateOne,可以直接传Document

 Document doc = new Document("Author", "Stephen King")
            .append("Books", new Document("Rose Red", ".69").append("Faithful", ".49").append("Throttle", ".49"));

collection.updateOne(new Document("id", "12"), Updates.push("Data", doc));