Mongoose: find() and count() query Background

I have a query in Mongoose that finds a set of objects, and then returns these said objects together with the total number of them:

var itemsPerPage = 4, pageNum = 1;

Survey.find({})
    .limit(itemsPerPage)
    .skip(itemsPerPage * pageNum)
    .then(docs =&gt; {
        if (docs.length === 0)
            console.log("There are no results matching your query.");
        else
            DocModel.count({})
                .then(number =&gt; {
                    console.log(JSON.stringify({number, docs}));
                });
        })
        .catch(console.log);


To achieve this I do:


find query with params
use limit and skip to obtain results from correct page
if docs is not empty, start a count query
return information


Problem

The problem here, since I need pagination in the query, is that I have to make 2 separate requests to the DB (find and count) which can potential be very heavy.

To optimize this, I would like to avoid the count query, but I don't know how. 

Another issue is the nested promises anti pattern, but that is not the issue I would like to focus on right now.

Question

I am open to any suggestions on improving this code you may have!
Solution

After reviewing many answers, I believe I have two options:


Make two queries, like I am doing now,
Use a pagination plugin for mongoose


My decision was the second one and so I am now using mongoose-paginate. 

Hope it helps.