【问题标题】:Distinct with Limit and Skip与限制和跳过不同
【发布时间】:2020-07-23 19:19:55
【问题描述】:

我有一个包含 2000 万条记录的集合。需要找到不同的一个字段。这可能有 10K 不同的价值。我想申请 Sort 、 limit 和 skip 以在一个查询中获取 1000 个不同的值。

我尝试使用聚合查询来查找具有限制的不同值,但它的工作速度非常慢。与我使用 distinct 函数相比,它相对较快,但我无法对结果应用限制。

这是不断增长的收藏。

【问题讨论】:

    标签: mongodb-query distinct limit


    【解决方案1】:

    您不能使用distinct 命令执行$sort$limit

    您最好的选择是将 MongoDB 聚合与索引一起使用。

    索引命令:

    db.<Collection-Name>.createIndex({"<Key-Name>": 1}, {background: true})
    

    聚合查询:

    db.<Collection-Name>.aggregate([
        {
            '$group': {
                '_id': '$<Key-Name>'
            }
        },
        {
            '$sort': {
                '_id': 1  // Sort in Ascending order, `-1` for descending order 
            }
        },
        {
            '$limit': 1000
        }
    ])
    

    【讨论】:

    • 我已经创建了索引。仍然查询大约需要 20-25 秒。有什么方法可以提高性能。
    • 您的聚合管道结构是否与我提供的答案相同?如果没有,请尝试使用索引并让我知道执行时间。
    猜你喜欢
    • 2013-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-30
    • 2013-03-20
    • 2019-01-19
    • 2018-04-06
    • 1970-01-01
    相关资源
    最近更新 更多