在PyMongo中插入现有密钥的记录

时间:2019-07-12 06:23:02

标签: python mongodb flask pymongo

我正在尝试使用后端作为MongoDB构建非常简单的REST API。我正在使用Flask和Python来构建它们。我只是在需要为现有密钥插入一些记录的部分上感到困惑。

输入:

stores =[
            {
                'name': 'My wonderful store',
                'items' : [
                            {
                                'name': 'My Item',
                                'price': 15.99
                            }
                        ]
            }
       ]

现在,如果它是普通的dictionary,我可以在键被配对的位置附加值,像这样:

def create_item_in_store(name):
    request_data = request.get_json()
    store = db.stores.find()
    for store in stores:
        if store['name'] == name :
            new_item ={
                'name': request_data['name'],
                'price':request_data['price']
            }
            **store[name].append(new_item)**
            return jsonify(new_item)
return jsonify({'message':'Store is not present'}) 

我试图研究PyMongo文档,但对更新语法感到困惑。 请提出建议。

1 个答案:

答案 0 :(得分:0)

使用以下逻辑更新了我的代码,该代码可以正常工作。

def create_item_in_store(name):
    request_data = request.get_json()
    stores = db.stores.find()
    for store in stores:
        print(store['name'])
        if store['name'] == name :
            new_item ={
                'name': request_data['name'],
                'price' : request_data['price']
            }
            db.stores.update_one({"name" : store['name']},{"$set": {"items" : [{"name" : request_data['name'], "price" : request_data['price']}]}})
            return jsonify(new_item)
    return jsonify({'message':'Store is not present'})