Det tredje argumentet till PyMongos update()
är upsert
och måste klaras av en boolesk, inte en ordbok. Ändra din kod till:
self.word_counts[source].update({'date':posttime}, {"$inc" : words}, True)
Eller skicka upsert=True
som ett sökordsargument:
self.word_counts[source].update({'date':posttime}, {"$inc" : words}, upsert=True)
Ditt misstag berodde troligen på att du läste om update()
i MongoDB-dokumenten. JavaScript-versionen av update
tar ett objekt som sitt tredje argument som innehåller valfria parametrar som upsert
och multi
. Men eftersom Python tillåter att nyckelordsargument skickas till en funktion (till skillnad från JavaScript som bara har positionsargument), är detta onödigt och PyMongo tar dessa alternativ som valfria funktionsparametrar istället.