Pouzivame funkci updateOne protoze je potrebe zaznamy bud ulozit a pokud uz podle klicovych parametru existuje tak aktualizovat. Dokument je sklada z 6 hodnot kdy 3 jsou string, 2 number a 1 boolean.
Tohle se dá za 2 minuty vygooglit na stackoverflow nebo v manuálu na stránkách výrobce.
Jestli na hulváta zapisuješ po jednom s updateOne, tak se spíš divím, že jsi se vubec dostal na 16k zápisů.
Pro inserty/updaty nekolik stringů a čísel, celkem o velikosti 128 bytů těch operací udělám třeba 70k/s když použiju bulk_write, bez toho to snad bylo 30x pomalejší. Když ty stringy zvětším tak že je to pak ten jeden insert 2,5kb velký, tak to klesne na 45k/s.
CPU se při tom vytíží jeden thread na 25% a na HDD ani SSD nezáleží, možná to jde jen do RAM a při dlouhodobějším zápisu by to zpomalilo víc.
Python:
update = list()
for d1, d2, d3 in nejakyData:
update.append(pymongo.UpdateOne({"data1":d1, "data2":d2, "data3":d3})
tvojeKolekce.bulk_write(update)