Я довольно озадачен тем, что из-за того, что поиск по полям в качестве «индекса» делает запрос «теоретически» медленнее.
У меня не очень большая коллекция элементов (6240), и у всех нихследующая структура.
const SomeSchema = new mongoose.Schema({
data: String,
from: {
type: Number,
},
to: {
type: Number,
},
timeStamp: {
type: Date,
default: new Date()
}
})
SomeSchema.set('toJSON', {
getters: true,
transform: (doc, ret) => {
delete ret.from
delete ret.to
return sanitizeSensitiveProperties(ret)
}
})
export const Some = mongoose.model('Some', SomeSchema, 'somethings')
Странная вещь возникла, когда после попытки улучшить запрос я изменил схему на
...
from: {
type: Number,
index: true
},
to: {
type: Number,
index: true
},
...
С этой схемой я запускаю следующий запрос
db.rolls.find({from: {$lte: 1560858984}, to: {$gte: 1560858984}}).explain("executionStats")
Это результаты ПРИМЕЧАНИЕ: 1-й ЕДИНИЦЫ без индекса
"executionTimeMillis" : 6,
"totalKeysExamined" : 0,
"totalDocsExamined" : 6240,
"executionTimeMillis" : 15,
"totalKeysExamined" : 2895,
"totalDocsExamined" : 2895,
Имеет ли этот результат какой-либо смысл, или это просто монго?.explain()
функция возиться?
Как вы можете видеть, я использую драйвер Mongoose
в версии ^ 5.5.13 и я использую Mongo
в версии 4.0.5