python - 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})
解决方案
由于文档已经存在,您需要更新它而不是插入,此外,由于您想将某些内容插入到数组中,它应该是 through $push
,另外,您可以使用find_one_and_update
它来返回更新后的文档,而不是进行两个 DB 调用::return_document = ReturnDocument.AFTER
或如果none
找不到匹配的文档,将返回。基于此,您可以返回响应。通常,您将使用insert
orinsert_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'})
推荐阅读
- javascript - 单节点图对 forceCenter 没有反应?
- django - 如何自定义 url 输出?
- javascript - 如果 ajax 失败,请更新设置并重试
- android - 无法使用 android 中的包将下载的数据从活动传输到片段
- arrays - 计算数组和无限子数组中的所有对象
- prestashop - 如何在prestashop的前端隐藏产品
- batch-file - 使用批处理文件将文件从 filezilla 传输到本地路径 C:\
- java - 尝试在空对象引用上调用虚拟方法 void android.widget.ImageView.startAnimation
- jquery - 检查所有子元素是否有 display:none
- python - 将基序映射回参考序列中的多个位点