Имеет ли тип поля значение в индексе MongoDB?

Вот два примера структуры документа в MongoDB.

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



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

Если бы я должен был создать индекс на UserID, была бы разница в производительности поиска запросов между двумя приведенными выше примерами?

Ответ 1

У меня нет особо точного ответа на этот вопрос, но вот мое понимание:

Indexes

Индексированные поля могут быть любого типа, включая (внедренные) документы

Индексы, скорее всего, хешируются, независимо от типа, чтобы иметь возможность индексировать один и тот же путь. Если бы были рассмотрены конкретные соображения для разных типов, стандартные документы mongodb сделали бы это различие.

Ответ на аналогичный вопрос здесь относится к образцам кода из mongodb, что предполагает, что сравнение индексов в основном относится к типам, но, вероятно, производительность, ориентированная на размер индекса.

Ответ 2

Одна вещь, чтобы отметить строки и числа, когда дело доходит до индексов, состоит в том, что порядок для числа в сортировке обычно хорошо понимается. Однако при использовании строки Lexicographic Order будет использоваться вместо этого, поэтому вам нужно знать о различиях там.

Кроме того, чтобы следить за углом размера, указанным jdi, строка может быть сколь угодно длинной, хотя она может управляться, конечно, длинной, которая будет храниться как двойной тип BSON, всегда будет 8 байт.