MongoDB自动分割 数据块,以确保数据在集群中公平分布,并且AutoMerger 自动合并驻留在同一分片上的相邻数据块。
要手动分割数据段,请使用带有字段middle或find的 split命令。 mongosh提供辅助方法sh.splitFind()和sh.splitAt() 。
splitFind() 将包含与该查询匹配的第一个返回文档的数据段分割成两个大小相等的数据段。您必须将分片集合的完整命名空间(即“<database>.<collection>”)指定为 splitFind()。splitFind() 中的查询不需要使用分片键,尽管这样做几乎总是有意义的。
例子
以下命令分割那些包含 records 数据库 people 集合 zipcode 字段 63109 值的数据段:
sh.splitFind( "records.people", { "zipcode": "63109" } )
使用 splitAt() 将数据段分成两部分,使用查询的文档作为新数据段的下限:
例子
以下命令分割那些包含 records 数据库 people 集合 zipcode 字段 63109 值的数据段。
sh.splitAt( "records.people", { "zipcode": "63109" } )
注意
splitAt() 不一定将数据段分割为两个大小相等的数据段。分割发生在与查询匹配的文档的位置,无论该文档位于数据段中的什么位置。