Структура документа в коллекции cities
выглядит следующим образом
города
{
_id: ObjectId("5e78ec62bb5b406776e92fac"),
city_name: "Mumbai",
...
...
subscriptions: [
{
_id: 1,
category: "Print Magazine",
subscribers: 183476
options: [
{
name: "Time",
subscribers: 56445
},
{
name: "The Gentlewoman",
subscribers: 9454
},
{
name: "Gourmand",
subscribers: 15564
}
...
...
]
},
{
_id: 2,
category: "RSS Feed",
subscribers: 2645873
options: [
{
name: "Finance",
subscribers: 168465
},
{
name: "Politics",
subscribers: 56945
},
{
name: "Entrepreneurship",
subscribers: 56945
},
...
...
]
}
]
}
Теперь, когда пользователь подписывается, как показано ниже
{
cityId: 5e78ec62bb5b406776e92fac
selections: [
{
categoryId: 1,
options : ["Time", "Gourmand"]
},
{
categoryId: 2,
selected: ["Politics", "Entrepreneurship"]
}
]
}
Я хочу обновить следующее в cities
документе
- Увеличить подписчиков на "Print Magazine" на 1
- Увеличить подписчиков на "Time" на 1
- Увеличение числа подписчиков на "Gourmand" на 1
- Увеличение числа подписчиков на "RSS-канал" на 1
- Увеличение количества подписчиков на "Политику" на 1
- Увеличьте число подписчиков для «Предпринимательства» на 1
. Таким образом, когда элемент подписан, число его подписчиков увеличивается на 1. И в категорию, в которую он попадает, его число подписчиков также увеличено на 1.
Я хочу добиться этого в одном запросе на обновление. Любые советы, как мне это сделать?
Подробности использования
Сведения о подписке каждого пользователя хранятся в коллекции user_subscription_details
(здесь нет в списке). Свойство subscriptions
в cities
содержит только сведения о подписке для каждого города.