当前位置: 首页 > 知识库问答 >
问题:

MongoDB{聚合$match}vs{find}速度

南宫俊喆
2023-03-14

我有一个包含数百万行的mongoDB集合,我正在尝试优化我的查询。我目前正在使用聚合框架来检索数据,并根据需要对它们进行分组。我的典型聚合查询类似于:$match>$group>$group>$project

然而,我注意到最后部分只花了几毫秒,开头是最慢的。

{
    "action" : "click",
    "timestamp" : {
            "$gt" : ISODate("2015-01-01T00:00:00Z"),
            "$lt" : ISODate("2015-02-011T00:00:00Z")
    },
    "itemId" : "5"
}

共有1个答案

莫英卓
2023-03-14

如果您关心的是性能,那么聚合无疑是时间任务,而不是find子句。当你在多个条件下获取记录时,有查找、分组和一些有限的记录(分页),那么最好使用聚合,同时在查找查询中,当你要获取非常大的数据集时,查询速度很快。您有一些人口,投影和没有分页我建议使用查找查询,这是快速的

 类似资料:
  • 我使用Nodejs和MongoDB与expressjs和mongoose库,创建一个具有用户、文章和评论模式的博客API。下面是我使用的模式。

  • 问题内容: 我正在尝试使用内部,而不返回匹配的文件。 谁能告诉我哪里出了问题或正确的语法? 我什至尝试更换 问题答案: 就像您链接到的文档中所说的那样,执行此操作的两种方法是: 要么 但是我也尝试了您的第二次尝试,并且效果很好。 顺便说一句,在这种情况下,正则表达式选项没有意义,因为无论如何您只需要一个匹配项。请注意,它甚至没有在文档中列出。

  • 主要内容:aggregate() 方法,管道MongoDB 中的聚合操作用来处理数据并返回计算结果,聚合操作可以将多个文档中的值组合在一起,并可对数据执行各种操作,以返回单个结果,有点类似于 SQL 语句中的 count(*)、group by 等。 aggregate() 方法 您可以使用 MongoDB 中的 aggregate() 方法来执行聚合操作,其语法格式如下: db.collection_name.aggregate(aggr

  • 并给我带来这些结果: {“_id”:{“name”:“city1”},“count”:212} {“_id”:{“name”:“city2”},“count”:1200} https://hexdocs.pm/mongodb/readme.html#贡献 提前谢了。

  • 我有一种情况,我需要根据一个数组值执行一个group by操作,该数组值将字段值的出现次数相加。然后对计数进行过滤,并准备结果,以便根据条件显示结果。从本质上讲,文档被转换回如果您只使用find函数就会呈现的方式。由于matchedDocuments数组中收集的项的数量,我遇到了临时文档太大的问题。任何关于如何改进这一点的建议都将是有益的。 以下是一些示例文档和基于上述标准的预期结果:

  • 我想在带有条件的集合列表中获得多个字段。我尝试了一个聚合请求,但我有一个错误。 我的请求 我的Json: 例如,我想在result中获得这个json: