O terceiro argumento para o
update()
do PyMongo é upsert
e deve ser passado um booleano, não um dicionário. Altere seu código para:self.word_counts[source].update({'date':posttime}, {"$inc" : words}, True)
Ou passe
upsert=True
como um argumento de palavra-chave:self.word_counts[source].update({'date':posttime}, {"$inc" : words}, upsert=True)
Seu erro provavelmente foi causado por ler sobre
update()
nos documentos do MongoDB. A versão JavaScript de update
recebe um objeto como seu terceiro argumento contendo parâmetros opcionais como upsert
e multi
. Mas como o Python permite passar argumentos de palavras-chave para uma função (diferente do JavaScript que possui apenas argumentos posicionais), isso é desnecessário e o PyMongo usa essas opções como parâmetros de função opcionais.