MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

PyMongo upsert lança upsert deve ser uma instância de erro bool


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.