Ich versuche, einige große Dateien (rund 4 Millionen Datensätze) in eine Mongo-Instanz zu schieben. Was ich im Grunde erreichen will, ist die Aktualisierung der vorhandenen Daten mit denen aus den Dateien. Der Algorithmus würde etwa so aussehen:
rowHeaders = ('orderId', 'manufacturer', 'itemWeight')
for row in dataFile:
row = row.strip('\n').split('\t')
row = dict(zip(rowHeaders, row))
mongoRow = mongoCollection.find({'orderId': 12344})
if mongoRow is not None:
if mongoRow['itemWeight'] != row['itemWeight']:
row['tsUpdated'] = time.time()
else:
row['tsUpdated'] = time.time()
mongoCollection.update({'orderId': 12344}, row, upsert=True)
Aktualisieren Sie also die gesamte Zeile außer "tsUpdated", wenn die Gewichte gleich sind, fügen Sie eine neue Zeile hinzu, wenn die Zeile nicht in Mongo enthalten ist, oder aktualisieren Sie die gesamte Zeile einschließlich "tsUpdated" ... Dies ist der Algorithmus
Die Frage ist: kann dies schneller, einfacher und effizienter aus der Sicht von Mongo geschehen? (eventuell mit einer Art von Masseneinfügung)