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

如何使用pymongo插入另一个嵌套文档?

颛孙铭
2023-03-14

我有一个文档,看起来像这样:

    {"_id": "123abc456def",
    "name": "John Smith",
    "address": [
        {"street": "First St.", "date": "yesterday", "last_updated": "two days ago"}
    ],
    "age": 123}

我尝试使用$push添加另一个街道文档,它错误地出现:

pymongo.errors。WriteError:字段“地址”必须是数组,但在文档{_id:ObjectId('6049e88657e43d8801197c72')}中属于object类型

我正在使用的代码:

    mydb3 = myclient["catalogue"]
    mycolALL = mydb3["locations"]
    query = {"charID": 0}
    newvalue = {"$push": {"address": {"street": "test123", "date": "test123", "last_updated": "now123"}}}
    mycolALL.update_one(query, newvalue)

没有制作地址簿或任何东西,只是编辑它,这样它对没有上下文的人来说更有意义。

我想要的输出是文档如下所示:

    {"_id": "123abc456def",
    "name": "John Smith",
    "address": [
        {"street": "First St.", "date": "yesterday", "last_updated": "two days ago"},
        {"street": "test123", "date": "test123", "last_updated": "now123"}
    ],
    "age": 123}

通常情况下,我可以通过谷歌找到答案,让投币和中奖!但这次我运气不好。

$set = 它只是更改现有文档,有效地替换它。这不是我想要的。

$addToSet=仅用于数组,错误消息:"pymongo.errors.WriteError:无法将$addToSet应用于非数组字段。名为“地址”的字段具有非数组类型对象"

有人能帮忙吗?

共有1个答案

应和悦
2023-03-14

只是猜测,但你确定你看到的是正确的数据/数据库吗?

根据您发布的数据,您的update_one()不会更新该记录,因为它与您的过滤器不匹配 {“charID”: 0}

 类似资料:
  • 我使用不同的工具,如处理来创建矢量图。这些图被写成单页或多页pdf。我想使用pdfbox将这些图包含在单个类似报告的pdf中。 我当前的工作流程包括这些PDF作为图像,并带有以下伪代码 虽然这有效,但它失去了矢量文件格式的好处,特别是文件/大小与打印质量。 是否可以使用pdfbox将其他pdf页面作为嵌入对象包含在页面中(未作为单独页面添加)?例如,我可以使用PDStream吗?我更喜欢像pdfl

  • 我是一个Python和mongob的新手,我试图从一个cvs文件写入一个pymongo文档。错误如下: TypeError:'str'对象是不可调用的因为?我附上相关代码谢谢

  • 问题内容: 使用插入pandas DataFrame到mongodb的最快方法是什么? 尝试次数 给出了一个错误 给出了一个错误 给出了一个错误 df 问题答案: 我怀疑是否有 最快 和 最 简单的 方法。如果您不担心数据转换,可以 但是,如果您尝试将数据加载回,则会得到: 所以你必须将“A” columnt回S,以及所有不,或字段您。对于此示例:

  • 问题内容: 我有一个非常基本的模板(basic_template.html),并希望使用使用另一部分模板格式化的数据来填写。basic_template.html可能包含使用部分模板格式化的几件事。 我应该如何在views.py中构建代码? 我这样做的原因是稍后将使用Ajax填充。我这样做对吗? 问题答案: 你可以做: 另一个Django模板在哪里。在这里,你可以放入将用Ajax获得的HTML。

  • 问题内容: 我可以使用Golang将平面对象插入BigQuery中-如何将嵌套数据插入表中? 我的BigQuery模式如下所示(从示例中): 我的第一次插入尝试如下所示(示例): 哪个变平并插入没有问题。我只是在用visit_duration 但是,我需要遍历一个片段并添加到访问记录中。我试图建立一个 访问 对象(没有要测试的循环)并将其添加到行中,但它没有插入,并且我没有收到任何错误: - -[

  • 问题内容: 这是场景: 我正在尝试在插入表时创建引用记录。但是我得到的是null,因为它是自动从序列中生成的。我也尝试了触发器插入,但是结果是一样的。有什么办法解决吗? 问题答案: 避免使用规则,因为它们会再次咬住您。 在每行运行的表a上使用after触发器。它看起来应该像这样(未经测试):