Как обновить поле из встроенного документа из массива в pymongo? - PullRequest
0 голосов
/ 22 сентября 2018

Я использую pymongo для программирования.Я хочу обновить поле из внедренного документа из массива, который хранится в базе данных MongoDB.Я могу обновить его прямо из оболочки mongo, используя оператор точки (.), например

Пример:

db.coll.update({},{"year.0.month":5})

Но если я использую тот же year.0.month в pymongo, я не смогуобновить его, так как он выдаёт мне ошибку.

Может кто-нибудь рассказать, как мне этого добиться в pymongo?

1 Ответ

0 голосов
/ 22 сентября 2018

Используйте $set для обновления.например,

db.coll.update({},{ "$set": {"year.0.month":5}}))

Между прочим, версия 3 update() ограничена, поэтому для обновления одного документа используйте update_one или find_one_and_update(), например,

db.coll.update_one({},{ "$set": {"year.0.month":5}})

или

db.coll.update_one_and_update({},{ "$set": {"year.0.month":5}})

И для обновления многие документы используют update_many() Например

db.coll.update_many({},{ "$set": {"year.0.month":5}},multi=True)
...