我試圖通過不同的客戶ID(CUSTID) 獲取不同的記錄相匹配的值指定的字段,分頁
- 所有文件
- 分頁(跳過和限制)
- 返回指定字段
變種訂單= mongoose.model( '訂單',orderSchema());
我最初的想法是使用mongoose db query,但你不能使用distinct
與skip and limit
爲Distinct is a method that returns an "array", and therefore you cannot modify something that is not a "Cursor":
Order
.distinct('request.headers.custID')
.where('response.status.code').equals(200)
.limit(limit)
.skip(skip)
.exec(function (err, orders) {
callback({
data: orders
});
});
於是我想到要用Aggregate
,使用$group
得到不同的customerID記錄,$match
返回所有唯一的客戶ID記錄的狀態碼爲200,並且$project
包含我想要的字段:
Order.aggregate(
[
{
"$project" :
{
'request.headers.custID' : 1,
//other fields to include
}
},
{
"$match" :
{
"response.status.code" : 200
}
},
{
"$group": {
"_id": "$request.headers.custID"
}
},
{
"$skip": skip
},
{
"$limit": limit
}
],
function (err, order) {}
);
儘管這會返回一個空數組。如果我刪除project
,則只有$request.headers.custID
字段返回,實際上我需要更多。
有什麼想法?
超級有用布雷克斯。也爲解釋+1! – Growler