我试图在输入字段上实现实时搜索建议。检索时间平均为1500毫秒,对于23个文档的集合,检索时间平均为3000毫秒。
这是在MongoLab的Sandbox等级上使用"变量"内存; AWS EC2 T2.Medium。
对数据模型的相关字段进行索引(使用Mongoose)。这是我的检索查询。
model_user.find(
{ 'profile.local.displayName' : new RegExp( '^' + req.query.input, 'i') }
, { 'profile.local.displayName' : 1, 'profile.local.photo' : 1 }) // photo is a url string
.limit(6)
.lean()
.exec(function (err, data) {
if (err) return next(err);
next(data);
}); // end exec
Mongo这是正常的吗?我是否应该使用.find()
光标进行实时搜索建议?如果是这样,我还应该使用什么呢?
编辑(太平洋时间下午8:52):刚刚升级到MongoLab上的共享多节点副本集。查询速度没有变化。
编辑(太平洋时间下午9:13):对上一次编辑的更正,多节点群集上的新速度为550ms-650ms
编辑(太平洋时间下午9:56):@ jsh我不太熟悉.explain(),控制台告诉我它不是一个功能。根据{{3}}启用Mongoose调试器是等效的,所以这里是输出(从直接复制中未格式化)。 的
的Mongoose: users.find({ 'profile.local.displayName': /^Daniel/i }) { limit: 6, fields: { 'profile.local.displayName': 1, 'profile.local.photo': 1 } }
GET [A] /api/search/username?input=Daniel 200 3.317s
的