Я создал для l oop в python, который просматривает коллекцию прогнозов в MongoDB и проверяет, есть ли строка, содержащая тот же идентификатор студента и текущую дату. Если есть, он должен обновить строку, если нет, должен вставить строку. Ниже мой код:
def getPredictions(school):
schoolDB = DB[school['database']['name']]
schoolPredictions = schoolDB['session_attendance_predicted']
Predictions = schoolPredictions.aggregate([{
'$project': {
'school': '$school',
'student':'$student',
'dateUploaded':'$date',
'probability':'$probability'
}
}])
return list(Predictions)
Predictions = getPredictions(school)
Predictions = pd.DataFrame(Predictions)
for i in df.index:
student = df.loc[i,'students']
dateToday = date.today()
probabilityOfLowerThanThreshold = 100
dateToday = datetime.datetime.combine(dateToday, datetime.time(0, 0))
MongoRow = pd.DataFrame.from_dict({'school': {'1': schoolID}, 'student': {'1': student}, 'dateUploaded': {'1': dateToday}, 'probability': {'1': probabilityOfLowerThanThreshold}})
data_dict = MongoRow.to_dict()
schoolDB = DB[school['database']['name']]
collection = schoolDB['session_attendance_predicted']
for i in Predictions.index:
collection.replace_one({'student': {'1': student}, 'dateUploaded': {'1': dateToday}}, data_dict, upsert=True)
Однако, он не работает. Он вообще ничего не производит в базе данных, поэтому коллекция прогнозов пуста. Я хочу вставить строку data_dict, если она не существует. Если он существует, просто обновите его.
Может кто-нибудь помочь, пожалуйста?