只是提到Mongodb聚合链接https://docs.mongodb.com/v3.2/aggregation/#aggregation-pipeline,它就提到了
"The aggregation pipeline can operate on a sharded collection."
请知道如果数据库是分片的,那么数据库中的所有集合都将被分片。另请确认,如果分片聚合查询将在许多服务器中运行,并快速交付结果。如果是这样,聚合查询的功能如何。
此致
克里斯
答案 0 :(得分:1)
聚合管道支持对分片集合的操作。
如果管道以分片键上的精确$ match开头,则整个管道仅在匹配的分片上运行。以前(版本3.2之前),管道将分为两部分,合并它的工作必须在主分片上完成。
对于必须在多个分片上运行的聚合操作,如果操作不需要在数据库的主分片上运行,则这些操作会将结果路由到随机分片以合并结果,以避免重载主分片那个数据库。 $ out阶段和$ lookup阶段需要在数据库的主分片上运行。
将聚合管道分成两部分时,管道将被拆分以确保分片在考虑优化的情况下执行尽可能多的阶段。
参考: https://docs.mongodb.com/manual/core/aggregation-pipeline-sharded-collections/
答案 1 :(得分:1)
分片群集始终具有主分片和一个或多个辅助分片。
请知道如果数据库是分片的,那么所有的集合 数据库将被分片
不,默认情况下,您的所有馆藏都不会被分片。所有这些集合都完全保留在主要碎片上。要对集合进行分片,请使用shardCollection命令
另请确认,如果分片,将运行聚合查询 许多服务器,并快速交付结果。
在分片环境中定义集合时,一个重要的事情是shard key。您应该确保选择一个好的分片键,它负责跨分片分发数据。因此,如果您选择一个好的分片键,您可以期望比非分片环境更好的性能。
如果是这样,聚合查询的功能如何。
聚合查询由$match
分割为不同的分片,具体取决于文档的位置,最后在分片上合并在一起。好的阅读是https://docs.mongodb.com/v3.2/core/aggregation-pipeline-sharded-collections/