加快慢Mongo / Mongoose查询速度

时间:2018-01-16 13:29:54

标签: node.js mongodb mongoose

我有以下模型和索引:

    var mySchema = new Schema({
    page: String,
    date: Date,
    data: Object,
    _page: {
        type: Schema.Types.ObjectId,
        ref: 'Page'
    },
});

mySchema.index({_page: 1, date: 1 }, {unique: true});

这个查询:

mySchema.find({
    _page: page._id,
    date: {
       $gte: date1,
       $lt: date2
    }
})
.sort({
   date: 1
})
.exec((err, result) => {
    console.log(result);
})

它会像这样注销:

myschema.find({ date: { '$gte': new Date("Thu, 16 Nov 2017 23:00:00 GMT"), '$lt': new Date("Thu, 14 Dec 2017 23:00:00 GMT") }, _page: ObjectId("5a57b30bf54be100c315f2f5") }, { sort: { date: 1 }, fields: {} })

从大约4000个文档和~60mb的表中返回约30个结果大约需要1秒。

DB是mlab上的副本集群,查询速度非常类似于我从localhost或我的服务器连接的天气(数据库和w-europe中的服务器)

有没有办法加快速度?我索引或查询错误吗?

1 个答案:

答案 0 :(得分:0)

使用lean()方法可以提高mongoose中查找查询的性能。原因是使用此函数返回普通的Javascript对象而不是额外的Mongoose方法,如保存函数,getter和setter。如果要检查普通Javascript对象和Mongoose对象的性能差异,可以访问this link

但是,您可以利用它仅用于读取操作。因此,如果只是查找操作,则可以使用lean()。

<canvas id='zipper-canvas'></canvas>