Сначала отметим, что вы говорите более конкретно о том, как Mongoose работает как посредник с MongoDB.Под этим я подразумеваю то, что в схеме mongoose, определяющей что-то вроде этого:
numero: {
type: Number,
required: true,
unique: true
}
Фактически означает, что (используя unique: true
) вы ARE создаете уникальный индекс для поля numero
, а часть index: true
является необязательной согласно документации .
Так что вам не нужно фактически создавать другой индекс.
Это также должно отвечать вашимвопрос о том, Model.find({}).sort("numero")
также использовать индекс.
Что касается передового опыта, вы должны проанализировать, как вы запрашиваете свои данные, и очень важно, какой тип данных у вас есть, чтобы выяснить, какого родаИндекс вам нужен.Например, если у вас есть данные lat/lng
, вы, вероятно, должны использовать Geospatial Index
и т. Д.
Вы также не хотите сходить с ума по индексации, поскольку это также вызывает другие проблемы .
Также очень важным инструментом для обзора того, что делает MongoDB, является оператор объяснения , который предоставляет вам информацию о плане запроса.
Вы должны часто использовать его для анализа иоптимизируйте свои запросы и выясните, где находятся ваши узкие места.
Также вы можете просматривать статистику своей коллекции с помощью
db.getCollection('your-collection-name').stats()
, которая даст вам хорошую информацию о текущих индексах коллекции, их размере и т. д..
Надеюсь, это поможет.