【发布时间】:2014-12-17 03:36:12
【问题描述】:
要在 MongoDB objectIds 上建立索引,我使用 db.collection.ensureIndex({ _id: "hashed"})。
这会生成一个 Number 类型,集合被索引。进入这个的算法是什么?是MD5吗?我如何在 ObjectID 对象上调用它?
例如,我想做一些事情,比如从集合中提取前 10 个 _id 哈希,并将其用于处理。
【问题讨论】:
要在 MongoDB objectIds 上建立索引,我使用 db.collection.ensureIndex({ _id: "hashed"})。
这会生成一个 Number 类型,集合被索引。进入这个的算法是什么?是MD5吗?我如何在 ObjectID 对象上调用它?
例如,我想做一些事情,比如从集合中提取前 10 个 _id 哈希,并将其用于处理。
【问题讨论】:
看the file hasher.cpp in the MongoDB sourcecode,使用的哈希函数确实是MD5。
但是,MongoDB 仅在内部使用这些哈希值。它不会将它们暴露给公共 API。散列索引只允许您查询确切的值。它通过获取您的输入,在对数据库中的索引字段进行哈希处理时对其进行哈希处理,并在代表索引的哈希表中搜索冲突。
【讨论】: