Вы не сможете использовать update_many()
, поскольку для этого требуется один критерий фильтра, который в вашем случае не будет работать. Что вам нужно, это replace_one()
в al oop с upsert = true. Что-то вроде:
from pymongo import MongoClient
import pandas as pd
db = MongoClient('localhost', 27019)['testdatabase1']
df = pd.DataFrame({'ItemID':['A1','A2','B1','B2','B3'],
'ParentID':['ItemA1','ItemA2','ItemB1','ItemB2','ItemB3'],
'ItemRating ': [0,0,0,0,0],
'ItemPrice ': [12,15,20,25,30],
'Qty': [100,200,300,400,150]
})
for row in df.iterrows():
record = row[1].to_dict()
result = db.testcollection.replace_one({'ItemId': record.get('ItemId'), 'ParentID': record.get('ParentID')}, record, upsert=True)
print(f'{"Replaced: " if result.modified_count == 1 else ""}{"Inserted: " if result.upserted_id is not None else ""} {record}')