如何提高MongoDB聚合查询的性能?

雨果

我正在使用以下查询来获取每天气温低于7.2度时的记录计数。该文档建议使用聚合框架,因为它比map reduce更快

db.maxial.aggregate([{
    $project: {
        time:1,
        temp:1,
        frio: {
            $cond: [
                { $lte: [ "$temp", 7.2 ] },
                0.25,
                0
            ]
        }
    }
}, {
    $match: {
        time: {
            $gte: new Date('11/01/2011'),
            $lt: new Date('11/03/2011')
        }
    }
}, {
    $group: {
        _id: {
            ord_date: {
                day: { $dayOfMonth: "$time" },
                month: { $month: "$time" },
                year: { $year: "$time" }
            }
        },
        horasFrio: { $sum: '$frio' }
    }
}, {
    $sort: {
        '_id.ord_date': 1
    }
}])

我得到的平均执行时间为2秒。难道我做错了什么?我已经在timetemp字段上使用索引

尼尔·伦恩

您可能已经定义了索引,但没有使用它们。为了使聚合管道“使用”索引,$match必须首先实现阶段。另外,如果您$project完全省略而仅将其包括在内,则$group您将以最有效的方式进行操作。

db.maxial.aggregate( [
    { "$match": {
        "time": {
            "$gte": new Date('2011-11-01'),
            "$lt": new Date('2011-11-03')
        }
    }},
    { "$group": {
        "_id": {
           "day": { "$dayOfMonth": "$time" },
           "month": { "$month": "$time" },
           "year": { "$year": "$time" }
       },
       "horasFrio": {
          "$sum": { 
              "$cond": [{ "$lte": [ "$temp", 7.2 ] }, 0.25, 0 ]
          }
       }
    }},
    { "$sort": { "_id": 1} }
])

项目并没有直接提供人们认为“减少田地”所带来的好处。

并当心JavaScript“日期”对象构造函数。除非以正确的方式发布,否则您将获得本地转换的日期,而不是应该发布的UTC时间参考。在重新编写的清单中消除了这种和其他误解。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何提高 mongoDb 查询性能?

来自分类Dev

如何调试 MongoDB 查询以提高性能

来自分类Dev

如何提高mysql查询的性能?

来自分类Dev

如何提高PostgreSQL查询性能

来自分类Dev

如何提高查询执行性能

来自分类Dev

如何提高mysql查询的性能?

来自分类Dev

如何提高pymongo查询的性能

来自分类Dev

如何提高此查询的性能

来自分类Dev

如何提高sql查询的性能

来自分类Dev

如何测试MongoDB聚合性能?

来自分类Dev

如何提高BigQuery中的GeoIP查询性能?

来自分类Dev

如何提高SQL Server Select查询的性能?

来自分类Dev

如何通过许多JOIN提高查询性能

来自分类Dev

如何使用NULL提高MySQL查询的性能?

来自分类Dev

如何提高ORDER BY ... LIMIT ...查询性能?

来自分类Dev

蜂巢如何提高我的查询性能?

来自分类Dev

如何提高此视图/查询的性能?

来自分类Dev

如何提高BigQuery中的GeoIP查询性能?

来自分类Dev

如何通过许多JOIN提高查询性能

来自分类Dev

如何提高SQL Server Select查询的性能?

来自分类Dev

如何提高此SQL Server查询的性能?

来自分类Dev

如何提高SQL Azure查询性能

来自分类Dev

如何提高这个 sql 查询的性能?

来自分类Dev

如何提高复杂的 MySQL 选择查询的性能?

来自分类Dev

如何提高多个内连接的查询性能?

来自分类Dev

提高(查询)性能

来自分类Dev

提高LINQ查询性能?

来自分类Dev

提高SimpleMembership查询性能?

来自分类Dev

无法提高查询性能