Đối số thứ ba cho update()
của PyMongo là upsert
và phải được chuyển qua boolean, không phải từ điển. Thay đổi mã của bạn thành:
self.word_counts[source].update({'date':posttime}, {"$inc" : words}, True)
Hoặc chuyển upsert=True
làm đối số từ khóa:
self.word_counts[source].update({'date':posttime}, {"$inc" : words}, upsert=True)
Lỗi của bạn có thể do đọc về update()
trong tài liệu MongoDB. Phiên bản JavaScript của update
lấy một đối tượng làm đối số thứ ba của nó có chứa các tham số tùy chọn như upsert
và multi
. Nhưng vì Python cho phép truyền các đối số từ khóa cho một hàm (không giống như JavaScript chỉ có các đối số vị trí), điều này là không cần thiết và PyMongo lấy các tùy chọn này làm tham số hàm tùy chọn.