如何使用mongoose和node检索前5个结果和总计数?

时间:2017-03-07 04:54:55

标签: node.js mongodb mongoose

我的字段集合如下,

enter image description here

我使用以下方法查询必要的数据,

query: function (model, conditon, options) {
            console.log(conditon, options);
            return new Promise(function (resolve, reject) {
                options = options || {};

                model.find(conditon, {}, options).exec(function (error, data) {
                    if (error)
                        reject(error);
                    resolve(data);
                })
            })
        }

如何更改上述内容以一次获取记录总数和前5个元素?

2 个答案:

答案 0 :(得分:2)

您可以使用聚合来获取文档并计算相同的结果。

model.aggregate( [
   { $match:conditon},
   { $group: { _id: null, count: { $sum: 1 }, results:{$push:'$$ROOT'} } },
   { $project: {count:1, results:{ $slice: 5}}}
], function(error, data){
      if (error)
          reject(error);
      resolve(data);
} );

答案 1 :(得分:1)

model.aggregate( [
   { $match: condition } },  // this stage will exclude documents on basis of match
   { $count:"Total Count"}, // this stage gives count of remaining documents after $match
   { $limit: 5} // this will limit your response to 5 documents
], function(error, data){
      if (error)
          reject(error);
      resolve(data);
} );

此查询将根据您的条件为您提供结果,然后计算文档数量,然后限制您的回复。