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



Ahoy,

我有一份看起来像这样的文件:

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

我试图使用$push添加另一个街道文档,它错误为:

pymongo.errors.WriteError:字段"address"必须是一个数组,但在文档{_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应用于非数组字段。名为"address"的字段具有非数组类型的对象";

有谁能帮忙吗?

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

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

最新更新