Hashed Indexes
在本页面
散列索引使用索引字段值的散列来维护条目。
哈希索引使用哈希分片键支持sharding。 基于散列的分片使用字段的哈希索引作为分片键,以跨分片群集对数据进行分区。
使用散列的分片键对集合进行分片会导致数据分布更加随机。有关更多详细信息,请参见Hashed Sharding。
Hashing Function
哈希索引使用哈希函数来计算索引字段值的哈希。散列函数折叠嵌入的文档并为整个值计算散列,但不支持多键(即数组)索引。
Tip
使用哈希索引解析查询时,MongoDB 自动计算哈希值。应用程序不需要计算哈希。
创建哈希索引
要创建hashed index,请指定hashed
作为索引键的值,如以下示例所示:
db.collection.createIndex( { _id: "hashed" } )
Considerations
MongoDB 支持任何单个字段的hashed
索引。散列函数折叠嵌入式文档并计算整个值的散列,但不支持多键(即数组)索引。
您不能创建具有hashed
索引字段的复合索引,也不能在hashed
索引上指定唯一约束;但是,您可以在同一字段上创建hashed
索引和升/降(即非哈希)索引:MongoDB 将标量索引用于范围查询。
Warning
MongoDB hashed
索引在散列之前将浮点数截断为 64 位整数。例如,对于拥有2.3
,2.2
和2.9
值的字段,hashed
索引将存储相同的值。为避免冲突,请勿对无法可靠转换为 64 位整数(然后又返回到浮点数)的浮点数使用hashed
索引。 MongoDB hashed
索引不支持大于 253 的浮点值。