Il terzo argomento di update()
di PyMongo è upsert
e deve essere passato un booleano, non un dizionario. Modifica il tuo codice in:
self.word_counts[source].update({'date':posttime}, {"$inc" : words}, True)
Oppure passa upsert=True
come argomento di una parola chiave:
self.word_counts[source].update({'date':posttime}, {"$inc" : words}, upsert=True)
Il tuo errore è stato probabilmente causato dalla lettura di update()
nei documenti MongoDB. La versione JavaScript di update
prende un oggetto come terzo argomento contenente parametri opzionali come upsert
e multi
. Ma poiché Python consente di passare argomenti di parole chiave a una funzione (a differenza di JavaScript che ha solo argomenti posizionali), ciò non è necessario e PyMongo prende invece queste opzioni come parametri di funzione opzionali.