在 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)