Mongo получает уникальное значение поля из большого запроса

#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)