字段类型在MongoDB索引中是否重要?

时间:2012-08-19 05:08:59

标签: performance mongodb types indexing field

以下是MongoDB中文档结构的两个示例。

{  
 UserId: "123",  
 UserName: "Usain Bolt"  
}



{  
 UserId: NumberLong(123),  
 UserName: "Usain Bolt"  
}

如果我要在UserID上创建索引,那么在上述两个示例之间查找查询效果会有区别吗?

2 个答案:

答案 0 :(得分:9)

我对此事没有特别准确的答案,但这是我的理解:

Indexes

  

索引字段可以是任何类型,包括(嵌入)文档

索引很可能是散列的,无论类型如何,都能够以相同的方式进行索引。如果对不同类型有特定的考虑因素,标准的mongodb文档会做出这种区分。

similar question here的答案是指来自mongodb的代码样本,这表明索引比较在类型方面几乎相同,但可能是针对索引大小的性能。

答案 1 :(得分:2)

关于索引的字符串与数字之间需要注意的一点是,排序中数字的顺序通常很容易理解。但是,当您使用字符串Lexicographical Order时,将使用它,因此您需要了解其中的差异。

另外,为了跟进jdi提到的大小角度,字符串可以任意长,虽然可以控制当然是long,它将被存储为BSON double类型将永远是{{3} }。