在pymongo中更新集合列表项中的值

时间:2020-06-17 09:29:51

标签: collections pymongo

我是pymongo的初学者,我有一个用户集合,其中存储了用户和评论列表 用户实例类似于

user = {"Name":"Bill" , "Comments":["nice" , "bad"]}

我想要的是访问“不良”项并将其更改为“评论”列表中的“良好”,但是我是初学者,并且在pymongo语法上遇到了麻烦。 此命令用于更新,但我不知道如何访问特定列表项

users.update_one({'key': 'value'}, {'$set': {'key': 'different value'}})

感谢您的帮助。预先谢谢

1 个答案:

答案 0 :(得分:1)

您可以使用positional operator($)。这样只会更新与查询条件匹配的第一个元素。

db.collection.update_one(
  { 'name': 'Bill', 'ratings': 'bad' },
  { '$set': 
    { 'ratings.$': 'good' }
  }
)

如果要将所有"bad"更新为"good",则应使用filtered positional operator($[<identifier>])

db.collection.update_one(
  { 'name': 'Bill' },
  { '$set': 
    { 'ratings.$[elem]': 'good' }
  },
  array_filters = [{ 'elem': 'bad' }]
)