Trzeci argument update()
PyMongo jest upsert
i musi być przekazany wartością logiczną, a nie słownikiem. Zmień swój kod na:
self.word_counts[source].update({'date':posttime}, {"$inc" : words}, True)
Lub podaj upsert=True
jako argument słowa kluczowego:
self.word_counts[source].update({'date':posttime}, {"$inc" : words}, upsert=True)
Twój błąd prawdopodobnie został spowodowany przeczytaniem o update()
w dokumentacji MongoDB. Wersja JavaScript update
przyjmuje obiekt jako trzeci argument zawierający opcjonalne parametry, takie jak upsert
i multi
. Ale ponieważ Python pozwala na przekazywanie argumentów słów kluczowych do funkcji (w przeciwieństwie do JavaScript, który ma tylko argumenty pozycyjne), jest to niepotrzebne, a PyMongo przyjmuje te opcje jako opcjonalne parametry funkcji.