目前,我使用此代码搜索第一个可能的' slug'基于字符串。这是递归的,所以,当他发现一个可能的slu ..时,它会停止。
function determineProductSlug(name, count, callback){
var nameSlug = name;
if(count > 0){
nameSlug = name + '-' + count;
}
Product.find({'en.nameSlug': nameSlug}).sort({_id: -1}).exec(function(err, product){
if(err){
return callback(err);
}
if(product.length == 0){
return callback(null, nameSlug);
}else{
count = count+1;
return determineProductSlug(name, count, callback);
}
})
}
但是,它变得非常缓慢。我们现在已经收集了大约10.000个文档,但是还会有更多文档。
如何加快此功能/查询的运行速度?我已经尝试了sort({id: -1})
,但这似乎没有帮助。
答案 0 :(得分:1)
如果您有权这样做,提高性能的一种方法是在en.nameSlug上创建索引。索引是保存在内存中的二叉树,这是最快的查找方式。索引可以降低写入性能,但你会知道最重要的是读取还是写入。