Третият аргумент към update() на PyMongo е upsert и трябва да се предава булева, а не речник. Променете кода си на:
self.word_counts[source].update({'date':posttime}, {"$inc" : words}, True)
Или предайте upsert=True като аргумент за ключова дума:
self.word_counts[source].update({'date':posttime}, {"$inc" : words}, upsert=True)
Вашата грешка вероятно е причинена от четене за update() в документите на MongoDB. Версията на JavaScript на update приема обект като трети аргумент, съдържащ незадължителни параметри като upsert и multi . Но тъй като Python позволява предаване на аргументи на ключова дума на функция (за разлика от JavaScript, който има само позиционни аргументи), това е излишно и вместо това PyMongo приема тези опции като незадължителни параметри на функцията.