Das dritte Argument für update()
von PyMongo ist upsert
und muss ein boolescher Wert übergeben werden, kein Wörterbuch. Ändern Sie Ihren Code in:
self.word_counts[source].update({'date':posttime}, {"$inc" : words}, True)
Oder übergeben Sie upsert=True
als Schlüsselwortargument:
self.word_counts[source].update({'date':posttime}, {"$inc" : words}, upsert=True)
Ihr Fehler wurde wahrscheinlich durch das Lesen von update()
verursacht in der MongoDB-Dokumentation. Die JavaScript-Version von update
nimmt ein Objekt als drittes Argument, das optionale Parameter wie upsert
enthält und multi
. Aber da Python erlaubt, Schlüsselwortargumente an eine Funktion zu übergeben (im Gegensatz zu JavaScript, das nur Positionsargumente hat), ist dies unnötig und PyMongo nimmt diese Optionen stattdessen als optionale Funktionsparameter.