@Xokare228

Как обновить объект в массиве?

есть объект
{
    "_id": {
        "$oid": "5f197d2a61d795fc53af6f0e"
    },
    "article_id": 1,
    "views": [{'23072020-11': 1}],
    "dislikes": [],
    "likes": []
}


Нужно увеличить значение в {'23072020-11': 1} на 1
Пробовал разные запросы, последний на котором остановился
analytics.update_one({'article_id': a_id, type: [t]}, {'$inc': {f'{type}.$': {t: 1}}})

Но, не рабоатет
В переменной t – 23072020-11, в type – 'views'
  • Вопрос задан
  • 81 просмотр
Решения вопроса 1
hzzzzl
@hzzzzl
"views": [{'23072020-11': 1}]
это ужасно, это уже готовый проект с заполненной БД, где нельзя переделать на что-то в духе ... ?
"views": [
  { 
    date: '23072020-11',   // а еще лучше в формате Date, а не строкой
    count: 1
  }
]


analytics.update_one(
  { article_id: a_id, 'views.date': '23072020-11' }, // тогда было бы несложно получить объект
  { $inc: {
       'views.$.count': 1  // и как-то так получилось бы
    }
  }
)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы