首页 > 解决方案 > python烧瓶mongodb插入数据

问题描述

如何在 python flask mongodb 中向特定用户插入数据

{
    "_id" : ObjectId("5e208aa1f86973bbd7db6e8a"),
    "worker_name" : "user1",
    "location" : "location1",
    "detection" : [ ]
},
{
    "_id" : ObjectId("5e208aa1f86973bbd7db6e8b"),
    "worker_name" : "user2",
    "location" : "location2",
    "detection" : [ ]
}

以上是我的用户,我想在user1 detection列表中插入一些数据,下面是我尝试过的代码

def face_detection():
    face_module = mongo.db.face_modules
    user = mongo.db.users
    stream_link = request.form['stream_link']
    location = request.form['location']
    camera = request.form['camera']
    result = {
            "location": location,
            "stream_url": stream_link,
            "worker_name": "user1",
            "date": "1/1/2020",
            "hour": "9",
            "minute": "10",
            "second": "25"
        }
    if user.find({"worker_name": result['worker_name']}).count() > 0:
        update_user = user.detection.insert(result)
        output = "user updated"
        return jsonify({'result': output})

标签: pythonpython-3.xmongodbflaskpymongo

解决方案


由于文档已经存在,您需要更新它而不是插入,此外,由于您想将某些内容插入到数组中,它应该是 through $push,另外,您可以使用find_one_and_update它来返回更新后的文档,而不是进行两个 DB 调用::return_document = ReturnDocument.AFTER或如果none找不到匹配的文档,将返回。基于此,您可以返回响应。通常,您将使用insertorinsert_one将新文档插入到 colleciton 中。我有点新pymongo,请添加代码以检查数据库中的错误场景,再加上测试此代码,您可以随时用任何发现更新此答案..

试试这个 :

def face_detection():
face_module = mongo.db.face_modules
user = mongo.db.users
stream_link = request.form['stream_link']
location = request.form['location']
camera = request.form['camera']
result = {
        "location": location,
        "stream_url": stream_link,
        "worker_name": "user1",
        "date": "1/1/2020",
        "hour": "9",
        "minute": "10",
        "second": "25"
    }
resp = user.find_one_and_update(
    {"worker_name": result['worker_name']},
    { '$push': {'detection' : result} },
    return_document = ReturnDocument.AFTER)


if resp :
    return jsonify({'result': resp})
else :
    return jsonify({'result': 'No document found'})

推荐阅读