MongoDB:添加索引

时间:2019-06-18 12:15:37

标签: node.js mongodb mongoose nosql

我很困惑为什么将搜索字段设为“索引”会使查询“理论上”变慢。

我收藏的物品不是很多(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")

这是结果请注意,第一个是没有索引的

"executionTimeMillis" : 6,
"totalKeysExamined" : 0,
"totalDocsExamined" : 6240,
"executionTimeMillis" : 15,
"totalKeysExamined" : 2895,
"totalDocsExamined" : 2895,

这个结果有意义吗,还是mongo .explain()函数搞砸了?

如您所见,我正在^ 5.5.13版本中使用Mongoose驱动程序,而在4.0.5版本中正在使用Mongo

0 个答案:

没有答案