优化使用$ min和$ max的mongoDB聚合

瑞士法郎

我的数据库中大约有300万个文档。我有这个查询来获取文档中包含的最小纬度和最大经度,因为在我的应用程序中,我想缩放包含在正方形中的现有数据。执行大约需要16秒:

正方形代表4个坐标。tMin和tMax是我的时间间隔(日期)。

    cursor = db.collection.aggregate([
        {
            "$match":
            {
                "nodeLoc":{"$geoWithin":{"$geometry":square}}, "t": {"$gt": tMin, "$lt": tMax}
            }
        },
        {
            "$group":
            {
                "_id": {},
                "minLat": {"$min": {"$arrayElemAt": [ "$nodeLoc.coordinates", 1]}},
                "maxLat": {"$max": {"$arrayElemAt": [ "$nodeLoc.coordinates", 1]}},
                "minLon": {"$min": {"$arrayElemAt": [ "$nodeLoc.coordinates", 0]}},
                "maxLon": {"$max": {"$arrayElemAt": [ "$nodeLoc.coordinates", 0]}}
            }
            }
    ]
    )

有什么方法可以优化$ group或$ match阶段吗?我已经在nodeLoc(2dsphere)和t上创建了复合索引,但是没有看到任何改进。

编辑:

我删除了索引,但是执行查询的时间保持不变。

教授79

组阶段将不使用索引恕我直言,这是通过所有数据值进行的非常昂贵的扫描。

对我来说,唯一可能的想法是减少匹配条件以对较小的dataSet进行操作,并在应用程序中汇总最终结果。

如果我们有,比方说从5天tMintMax-更快的响应可以通过在5轮运行的查询来实现。最后进行阵列合并,并扫描20个阵列条目的最小值,最大值。

这对您有意义吗?

欢迎任何意见!

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

优化子查询的使用以获得MIN和MAX

来自分类Dev

优化使用IN和MAX(date)的MySQL查询

来自分类Dev

使用 max 和 min 构建 if 语句

来自分类Dev

使用 MAX 和 MIN 计算字段的分数

来自分类Dev

优化 MIN & MAX 查询

来自分类Dev

使用MAX()和SUM()聚合的SQL查询

来自分类Dev

MongoDB聚合查询优化:$ match,$ lookup和double $ unwind

来自分类Dev

MongoDB使用聚合管道查找和更新

来自分类Dev

结果未使用聚合和MongoDB排序

来自分类Dev

在 mongodb 中使用多个 $lookup 和聚合

来自分类Dev

访问SQL:无法使用Max()和Min()值更新列表

来自分类Dev

从MySQL中选择行并使用MAX和MIN进行分组

来自分类Dev

在 where 子句中使用 Select Min 和 MAx

来自分类Dev

在 Python 数组中使用 max() 和 min() 失败

来自分类Dev

在无绑定操作中使用 MAX 和 MIN

来自分类Dev

max() 和 min() 蟒蛇

来自分类Dev

mongodb聚合框架的索引优化

来自分类Dev

mongodb聚合框架的索引优化

来自分类Dev

MySQL:SUM / MAX / MIN GROUP BY查询优化

来自分类Dev

Max-Min 和 Min-Min 算法实现

来自分类Dev

MIN和MAX的MySQL索引

来自分类Dev

SQL MIN(),MAX()和AVG

来自分类Dev

使用MongoDB聚合管道展开和汇总子子文档

来自分类Dev

MongoDB聚合-使用LTE和Fallback匹配GTE

来自分类Dev

在Mongodb中使用聚合,查找和管道进行查询

来自分类Dev

使用带有$ lookup和$ match的聚合的搜索查询mongodb

来自分类Dev

如何在MongoDB中同时使用findOne和聚合?

来自分类Dev

在聚合框架mongodb中使用$ unwind和$ text

来自分类Dev

使用 MongoDB 中的聚合框架进行分组和计数