Поскольку документ уже существует, вам нужно обновить его, а не вставлять. Кроме того, поскольку вы хотите вставить что-либо в массив, оно должно быть через $push
, плюс вместо двух вызовов БД вы можете использовать find_one_and_update
, что верните обновленный документ с этой опцией :: return_document = ReturnDocument.AFTER
или вернете none
в случае, если соответствующий документ не найден. На основании этого вы можете вернуть ответ. Как правило, вы используете insert
или insert_one
для вставки нового документа в коллекцию. Я немного новичок в 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'})