对两个计数执行mongodb查询并以有效的方式提取结果

时间:2016-03-14 14:49:18

标签: node.js mongodb express ejs

我正在对包含超过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,
            });
        });
    });

当我执行不同的搜索时,它会使浏览器挂起一点点。而且我觉得这不是一种有效的方式。反正有没有改善这个?

0 个答案:

没有答案