假设我有一个[String, int]
形式的数据结构,我希望能够在O(1)
时间内进行查找。在传统的SQL数据库中,我只需创建一个查找表即可。
如何将相同内容翻译为mongodb,以便我可以将String
元素用作key
,将int
用作value
?
答案 0 :(得分:2)
MongoDB允许您在集合中的字段上创建索引;但是,这些是B树索引,会导致查找为O(log n)。
如果您需要O(1)查找,那么我建议使用Redis。
答案 1 :(得分:2)
在MongoDB中,您的文档需要按以下方式构建:
{
key: "the key name"
value: 100
}
然后,您将创建一个索引:
db.myLookupTable.ensureIndex({key : 1})
它不会是O(1)
时间,因为它不是哈希查找。正如here所解释的那样,默认情况下,MongoDB中的索引是基于B树的,因此其他类型的操作是可能的(比如您从基于哈希的索引无法获得的排序)。 B树是最坏的情况O(log n)
。
您还可以为MongoDB中的索引启用哈希索引:
db.myLookupTable.ensureIndex({key: "hashed" })
这限制了您可以对索引执行的查询类型。例如,范围查询是不可能的。