В настоящее время у меня есть этот код, который перебирает каждую строку в моей таблице сбора mongoDB и либо вставляет строку, либо обновляет строку новыми данными (в зависимости от того, есть ли сегодняшняя дата и studentID):
for rowindex, row in InsertionData.iterrows():
record = row.to_dict()
record['date'] = datetime.datetime.combine(datetime.date.today(), datetime.time(0, 0))
collection.replace_one({'student': row.get('student'), 'date': record['date']}, record, upsert=True)
Тем не менее, мне было интересно, есть ли способ сделать массовую upsert?
Моя идея состоит в том, что он пропустит все записи, которые будут обновлены, создаст сценарий обновления и добавит его в массив операций. Затем, когда у него заканчиваются записи или он достигает 5000, он запускает функцию bulkWrite для Mon go, которая в основном отправляет один запрос на сервер mon go, а не 5000 отдельных запросов. Это сделало бы это намного быстрее, так как самое большое замедление - это связь между сервером, а не сама функция обновления.
Кто-нибудь знает, как это сделать в python / pymon go?