Увеличить все поля всех объектов в коллекции pymongo

#python #mongodb #pymongo

#python #mongodb #pymongo

Вопрос:

Здравствуйте, я хотел бы увеличить поле current_week всех объектов в коллекции tournaments , но я получаю сообщение об ошибке. У меня есть код:

 class DataBase:

    def __init__(self):
        self.myclient = pymongo.MongoClient("mongodb://localhost:27017/")
        self.mydb = self.myclient["MMA_TOURNAMENT"]
        self.tournaments = self.mydb["tournaments"]

    def insert_new_tournament(self, tournament):
        print(tournament.__dict__)
        self.tournaments.insert_one(tournament.__dict__)

    def increment_day(self):
        self.tournaments.update({'$inc': {'current_week' : 1}})
 

и я получаю сообщение об ошибке:

 TypeError: update() missing 1 required positional argument: 'document'
 

при вызове функции. Я новичок в pymongo, я действительно не знаю, какой запрос я должен туда поместить. Спасибо!

Ответ №1:

Вам нужно передать фильтр в качестве первого параметра update_many() ; для обновления каждого документа ваш фильтр прост {} .

 def increment_day(self):
    self.tournaments.update_many({}, {'$inc': {'current_week' : 1}})