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.32.22.9值的字段,hashed索引将存储相同的值。为避免冲突,请勿对无法可靠转换为 64 位整数(然后又返回到浮点数)的浮点数使用hashed索引。 MongoDB hashed索引不支持大于 253 的浮点值。