首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mongodb聚合流水线优化-- $match的第2阶段

Mongodb聚合流水线优化-- $match的第2阶段
EN

Stack Overflow用户
提问于 2019-06-10 15:00:28
回答 1查看 195关注 0票数 0

最近,我正在研究聚合管道的性能优化。我在决定索引时遇到了这个问题。我为{'receiverId': 1,'type': 1 }设置了一个复合索引。我原来的管道是这样的。我正在考虑是否有必要对isRead进行索引。我之所以没有创建三个字段的复合索引,因为其他查询只使用recieverIdtype

代码语言:javascript
复制
notifications.aggregate([{
        $match: {
            'recieverId': ObjectId(xxx),
            'type': xxx,
            'isRead': false
        }
    },
    {
     ...
    },
], (err, result) => {
    return res.status(200).json(result);
});

所以,我换了下面这个。想知道这样的管道在过滤recieverIdtype后是否可以节省一些计算成本。isRead,第二个$match会从第一个$match的结果中过滤吗?

代码语言:javascript
复制
notifications.aggregate([{
        $match: {
            'recieverId': ObjectId(xxx),
            'type': xxx,
        }
    },
    {
        $match: {
            'isRead': false
        }
    },
    {
     ...
    },
], (err, result) => {
    return res.status(200).json(result);
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-10 15:45:17

实际上,这并不重要,因为mongo将优化这条管道。

从医生那里:

当一个$match紧跟另一个$match时,这两个阶段可以合并成一个$match。

了解它和其他管道优化,mongo做这里

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56528845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档