我的字段集合如下,
我使用以下方法查询必要的数据,
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个元素?
答案 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);
} );
此查询将根据您的条件为您提供结果,然后计算文档数量,然后限制您的回复。