为什么使用$group / group_by而不是多个请求?

问题描述 投票:0回答:1

假设我收集的文档中有 100 种狗。如果我需要按狗的类型进行分组,然后计算有关每种类型的狗的一些汇总统计数据,为什么要执行涉及 $group 的查询,原则上它会按顺序处理每个文档,而不是向数据库发送 100 个单独的同步查询,其中每个查询根据狗的类型进行过滤?

100个同时、单独的查询不是更快吗?

如果速度更快、规模更大,那么不这样做会有什么缺点(如果有的话)?

sql mongodb group-by mongodb-query nosql
1个回答
0
投票

选择使用单个 $group 操作还是发送 100 个单独的同步查询取决于许多因素,包括数据大小、查询的复杂性以及 MongoDB 服务器的功能。 一般来说,单个 $group 操作会更高效,因为它只需要扫描集合一次。它还可以利用索引来加速分组操作。另一方面,发送 100 个单独的查询将需要扫描集合 100 次,如果集合很大,这可能会明显变慢。 但是,如果查询很简单且集合很小,则发送 100 个单独的查询可能会更快,特别是在 MongoDB 服务器能够并行执行查询的情况下。如果您拥有大量 MongoDB 服务器并且可以在它们之间分发查询,那么这种方法也可能更具可扩展性。 发送 100 个单独查询的主要缺点是,它可能会给 MongoDB 服务器带来大量负载,特别是当查询很复杂或集合很大时。这可能会减慢服务器速度并影响其他操作的性能。如果服务器无法立即处理所有查询,还可能会增加错误或超时的风险。 此外,管理 100 个单独的查询可能比管理单个 $group 操作更复杂且更容易出错。例如,您需要单独处理每个查询的结果并将它们组合成一个结果集。 总之,是使用单个 $group 操作还是 100 个单独的查询取决于您的具体用例。您应该使用数据和查询测试这两种方法,看看哪一种效果更好。 参考:有没有一种方法可以在 MongoDB 中对不同类型的文档进行单一查询,并将每种类型限制为一个集合中的特定数量?

在我的 Slack 工作空间中免费获得专家解答您的技术问题 https://join.slack.com/t/doc-eai/shared_invite/zt-22r8o2f9j-U9VI0NzkglPaThJ3HezTUA

© www.soinside.com 2019 - 2024. All rights reserved.