【发布时间】:2022-01-05 16:51:41
【问题描述】:
我找到了多个关于在 pymongo 数组上推送新元素的教程,但不幸的是,这些教程都不适合我。
我有一个类似这样的文档
{
"_id": "14487152",
"added_by": [
{"name": "Gumi", "user_id": 70658401}
]
}
这就是我在 added_by 数组中插入新字典的方法:
def find_product(self, _id): # Find by Id
data = self.collection.find_one({"_id": _id})
return data
def add_new_product(self):
self.collection.update_one(
{"_id": self.find_product(_id=product['_id'])},
{"$push": {"added_by": [{"name": "Harshil", "user_id": 7258757}]}},
upsert=False)
但是通过这样做,它会创建一个新文档并开始添加类似这样的内容
{
"_id": {
"_id": "14487152",
"added_by": [
{"name": "Gumi", "user_id": 70658401}
]
},
"added_by": [
[
{"name": "Harshil", "user_id": 7258757}
]
]
}
那么我到底想要达到什么目的?
-- 我想在"added_by"中的现有文档中附加{"name": "Gumi", "user_id": 70658401}
这是我期待的输出
{
"_id": "14487152",
"added_by": [
{"name": "Gumi", "user_id": 70658401},
{"name": "Harshil", "user_id": 7258757}
]
}
【问题讨论】:
-
upsert是否曾一度设置为True? -
您的
find_product()返回的远远超过_id。
标签: python python-3.x mongodb pymongo