mapReduce中的猫鼬限制和总数

时间:2013-04-07 18:31:24

标签: node.js mongodb mongoose

我需要运行一个查询,该查询返回文档的总数和文档,并且可以限制和偏移。它与thisthis问题类似。区别在于我在stats参数中运行map / reduce和总计数,所以希望我不必再调用两次查询。

list: function (options, cb) {
    ...
    this.mapReduce(o, function (err, model, stats) {
        console.log('# of documents: %d ', stats.counts.output);
        model.find()
            .limit(criteria.perPage)
            .skip(criteria.perPage * criteria.page)
            .exec(cb);
    });
});

我从控制器调用list函数,如下所示:

Track.list(options, function (err, docs) {
    res.json(docs);
});

以某种方式可以将stats.counts.output与返回的文档一起传递给控制器​​吗?

1 个答案:

答案 0 :(得分:0)

您可以将cb包含在exec的参数中的函数中:

model.find()
    .limit(criteria.perPage)
    .skip(criteria.perPage * criteria.page)
    .exec(function (err, docs) {
      cb(err, docs, stats.counts.output)
    });

Track.list(options, function (err, docs, count) {
    res.json({docs: docs, count: count})
})