#database #mongodb #performance
#База данных #mongodb #Производительность
Вопрос:
Чтобы заполнить кэш, мне нужно запросить все клубы, которые уже продали билеты за определенный промежуток времени. Итак, я запрашиваю все проданные билеты и просматриваю их все, чтобы найти список активных клубов за данный период. Но это требует больших вычислений, которые выполняются почти каждую минуту с большим количеством заявок, поэтому это влияет на мои расходы на инфраструктуру. Как я могу сделать более эффективный запрос?
Документ
{
id: "32r34r34r3r434r4r",
creationDate: 18909894344,
clubId: "9685ut56tu9t698t9",
type:"TICKET"
}
Коллекция
...
{clubId: "3e32e4r43r43r43r4",...},
{clubId: "3e32e4r43r43r43r4",...},
{clubId: "5t89u54u895tu95t8",...},
{clubId: "6t68ut986ut986ut9",...},
....
Мне нужно получить
[
"3e32e4r43r43r43r4"
"5t89u54u895tu95t8"
"6t68ut986ut986ut9"
]
Ответ №1:
Можете ли вы попробовать с этим
db.collection.aggregate([
{
$group:{
_id:null,
clubIds:{$addToSet:"$clubId"}
}
}
])
Комментарии:
1. моя структура плоская. в каждом документе есть поле ClubId.
2. Ответ обновлен. Можете ли вы попробовать с этим. Не понял
Query
, указанный в вопросе3. опечатка. Я имел в виду коллекцию
Ответ №2:
Для этого вы можете передать запрос в distinct
:
db.collection.distinct('clubId', query)