在 pymongo 中:如何在现有数组中附加新字典
In pymongo: How can I append new dict in an existing array
我找到了多个关于在 pymongo 数组上推送新元素的教程,但不幸的是,none 其中对我有用。
我有一个这样的文档
{
"_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}
]
}
我会这样写:
def add_new_product(self):
data = self.find_product(_id=product['_id'])
newvalue = {"$push": {'added_by': {"name": "Harshil", "user_id": 7258757}}}
self.collection.update_one({"_id": data['_id']}, newvalue)
我找到了多个关于在 pymongo 数组上推送新元素的教程,但不幸的是,none 其中对我有用。
我有一个这样的文档
{
"_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}
]
}
我会这样写:
def add_new_product(self):
data = self.find_product(_id=product['_id'])
newvalue = {"$push": {'added_by': {"name": "Harshil", "user_id": 7258757}}}
self.collection.update_one({"_id": data['_id']}, newvalue)