обновить значение в элементе списка коллекции в pymongo - PullRequest
0 голосов
/ 17 июня 2020

Я новичок в pymon go, и у меня есть коллекция пользователей, в которой хранится пользователь и список комментариев. Экземпляр пользователя похож на

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

Я хочу получить доступ к "плохой" элемент и измените его на "хороший" в моем списке комментариев, но я новичок и у меня проблемы с синтаксисом pymon go. Эта команда используется для обновления, но я не знаю, как получить доступ к указанному c элементу списка

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

Буду признателен за вашу помощь. Заранее спасибо

1 Ответ

1 голос
/ 17 июня 2020

Вы можете использовать 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' }]
)
...