当前位置: 首页 > 知识库问答 >
问题:

使用Java Driver 3.4将数据附加到MongoDB文档中的数组

乐正烨熠
2023-03-14

我正在使用MongoDB Java Driver 3.4,希望更新MongoDB集合中的文档(id为“12”)。目前,文档如下:

{"id" : "12", "Data" : [{"Author" : "J.K. Rowling", 
                              "Books" : {"Harry Potter 1" : "$15.99", "Harry Potter 2" : "$16.49", "Harry Potter 3" : "$19.49"}},
                             {"Author" : "Philip Roth", 
                              "Books" : {"American Pastoral" : "$12.99", "The Human Stain" : "$39.49", "Indignation" : "$29.49"}}
                            ]}

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

{"Author" : "Stephen King", "Books" : {"Rose Red" : "$12.69", "Faithful" : "$9.49", "Throttle" : "$8.49"}}

为此,我编写了以下java代码:

Document doc = new Document().append("Author", "Stephen King")
                             .append("Data", new Document("Rose Red", "$12.69")
                                            .append("Faithful" : "$9.49")
                                            .append("Throttle" : "$8.49"));                                                                                     

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

IDE向我显示以下内容,表明最后一条语句(collection.update…)有问题:

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

P.S.:这不是(MongoDB Java)$push-into数组的副本。我的问题涉及Java驱动程序3.4。另一个问题涉及具有完全不同类的早期版本。

共有1个答案

彭存
2023-03-14

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

字段-从<代码>数据 更改为<代码>书籍

分隔符-从<代码>分号 更改为<代码>逗号

方法-从< code>update更改为< code>updateOne,可以直接传递< code>Document。

 Document doc = new Document("Author", "Stephen King")
            .append("Books", new Document("Rose Red", "$12.69").append("Faithful", "$9.49").append("Throttle", "$8.49"));

collection.updateOne(new Document("id", "12"), Updates.push("Data", doc));
 类似资料:
  • 问题内容: 我有这个.json文件: 这是我的PHP代码: 问题是,我不确定如何实现它。每次提交表单时,我都会在上面调用此代码,因此我需要ID递增,并且还要使用和保持有效的JSON结构,这可能吗? 问题答案:

  • 我正在使用下面的代码。然而,当我运行代码时,我想在同一个TXT文件中一个接一个地添加新的XML。这是否可以使用JDOM。请帮帮我。。 xmlOutput。输出(文档,新FileWriter(“c:\updated.txt”));是否需要修改?

  • 问题内容: 该阿帕奇共享的I /函数O覆盖以前的文本文件。我想将数据附加到我的文件中。有什么我可以使用Commons I / O的方法吗?我可以使用Java的normal来做到这一点,但我对使用Commons I / O的情况感到好奇。 问题答案: 它已在Apache IO的2.1版本中实现。要将字符串追加到文件,只需在函数中传递 true 作为附加参数即可: FileUtils.writeStr

  • 这比我找到的或者我自己能想到的其他答案要具体一点。 我的json文件完全包含 不多也不少。使用这种格式的json数据,我可以得到所需的确切结果。 我想做的是能够使用PHP向json文件追加更多内容。我见过: 我的问题是,我不明白如何在我的示例中使用这个示例,因为我的json数据没有为其单个数组使用键。我是否必须放弃并找到一种使用命名键来获得我想要的结果的方法,或者有没有一种方法可以让我的json数

  • 我试图在mongo数据库中插入一个文档(json字符串)。其中一个键“profile”的值是json字符串。所以,它基本上是一个嵌套的json结构。我知道可以通过滥用document类中的collection refs/one may关系来插入嵌套的json。 我在这里面临的问题是,嵌套部分的json结构不是固定的,因此不能抽象为java类,因为它是从社交网络API获取的自定义数据json。将“p

  • 问题内容: 我将如何继续追加数据?我有这个: 我想向它添加另一个对象,例如: 这是我使用的代码: 我真的不知道如何继续添加它,但是也许其他人知道吗? 问题答案: 您将无法使用文件追加操作来执行此操作。文件追加操作只能在末尾添加文本,而不能在中间插入文本。这使得不可能使用file-append来保持JSON有效。 我可以想到两种选择: 将整个文件读入一个对象,添加您的对象,然后重写整个文件(性能不佳