Het derde argument voor PyMongo's update() is upsert en moet een boolean worden doorgegeven, geen woordenboek. Verander je code in:
self.word_counts[source].update({'date':posttime}, {"$inc" : words}, True)
Of geef upsert=True door als zoekwoordargument:
self.word_counts[source].update({'date':posttime}, {"$inc" : words}, upsert=True)
Je fout is waarschijnlijk veroorzaakt door te lezen over update() in de MongoDB-documenten. De JavaScript-versie van update neemt een object als zijn derde argument met optionele parameters zoals upsert en multi . Maar aangezien Python het doorgeven van trefwoordargumenten aan een functie toestaat (in tegenstelling tot JavaScript dat alleen positionele argumenten heeft), is dit niet nodig en neemt PyMongo deze opties in plaats daarvan als optionele functieparameters.