我正在对包含超过3000个支持分页的文档的集合执行查询。
它的作用是首先计算结果中的文档数,然后执行另一个查询以提取结果并传递结果以进行渲染。
我的意思是它做了两次相同的事情,我认为它会使搜索更慢。
// first query for counting the number of documents in the result
collection.find({$or:[{name: {$regex: pattern, $options: 'i'}}, {author: {$regex: pattern, $options: 'i'}}]}).count(function(er, count) {
// second query to get all the documents in the result
collection.find({$or:[{name: {$regex: pattern, $options: 'i'}}, {author: {$regex: pattern, $options: 'i'}}]}).skip(pagination.claculate_skip_offset_index(param_val)).limit(pagination.items_per_page).toArray(function (err, docs) {
options = pagination.options(param_val, query, collection_name, count);
res.render('pages/search', {
title: 'Search - '+query,
songs: docs,
options: options,
});
});
});
当我执行不同的搜索时,它会使浏览器挂起一点点。而且我觉得这不是一种有效的方式。反正有没有改善这个?