【问题标题】:update value in collection list item in pymongo更新pymongo中集合列表项中的值
【发布时间】:2020-06-17 09:29:51
【问题描述】:

我是 pymongo 的初学者,我有一个存储用户和 cmets 列表的用户集合 一个用户的实例就像

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

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

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

感谢您的帮助。提前谢谢你

【问题讨论】:

    标签: collections pymongo


    【解决方案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' }]
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-24
      • 1970-01-01
      • 2021-07-04
      • 2021-12-05
      • 1970-01-01
      • 1970-01-01
      • 2021-10-23
      • 1970-01-01
      相关资源
      最近更新 更多