Mongo从大型查询中获取唯一字段值

时间:2019-03-14 15:39:08

标签: database mongodb performance

为了填充缓存,我需要查询在一定时间范围内已经售出门票的所有俱乐部。因此,我查询所有售出的门票并循环浏览所有门票,以找到给定期间的活跃俱乐部列表。但是,如果要对大量票证几乎每分钟运行一次繁重的计算,那么这将影响我的基础设施账单。 如何进行更有效的查询?

文档

{   
    id: "32r34r34r3r434r4r", 
    creationDate: 18909894344,
    clubId: "9685ut56tu9t698t9",
    type:"TICKET"
}

收藏

...
{clubId: "3e32e4r43r43r43r4",...},
{clubId: "3e32e4r43r43r43r4",...},
{clubId: "5t89u54u895tu95t8",...},
{clubId: "6t68ut986ut986ut9",...},
....

我需要得到

[
"3e32e4r43r43r43r4"
"5t89u54u895tu95t8"
"6t68ut986ut986ut9"
]

2 个答案:

答案 0 :(得分:1)

您可以尝试一下

db.collection.aggregate([
{
$group:{
    _id:null,
    clubIds:{$addToSet:"$clubId"}
    }
}
])

答案 1 :(得分:0)

您可以将查询传递给distinct来做到这一点:

db.collection.distinct('clubId', query)