以下是MongoDB中文档结构的两个示例。
{
UserId: "123",
UserName: "Usain Bolt"
}
{
UserId: NumberLong(123),
UserName: "Usain Bolt"
}
如果我要在UserID
上创建索引,那么在上述两个示例之间查找查询效果会有区别吗?
答案 0 :(得分:9)
我对此事没有特别准确的答案,但这是我的理解:
索引字段可以是任何类型,包括(嵌入)文档
索引很可能是散列的,无论类型如何,都能够以相同的方式进行索引。如果对不同类型有特定的考虑因素,标准的mongodb文档会做出这种区分。
给similar question here的答案是指来自mongodb的代码样本,这表明索引比较在类型方面几乎相同,但可能是针对索引大小的性能。
答案 1 :(得分:2)
关于索引的字符串与数字之间需要注意的一点是,排序中数字的顺序通常很容易理解。但是,当您使用字符串Lexicographical Order时,将使用它,因此您需要了解其中的差异。
另外,为了跟进jdi提到的大小角度,字符串可以任意长,虽然可以控制当然是long,它将被存储为BSON double类型将永远是{{3} }。