2015-03-19 73 views
1
.get(function(req, res){ 
    Recipt.find({'User':req.params.name}) 
      .sort('-allRecipt.recipt_Number') 
      .limit(1) 
      .select('allRecipt') 
      .exec(function(err, doc){ 
       if(err) res.send(err); 
       console.log(doc); 
    }); 
}); 

我有一個這樣的代碼,從mongoose中排序出最大值爲recipt_Number的文件,這是一個數組allRecipt的字段。但所有收件人還包含一些recipt_Number記錄,我想獲取最大值的一個。想寫查詢結果

+0

你能發佈一個示例doc?或從它的相關位至少... – Alex 2015-03-19 13:10:29

回答

0

假設您的收藏有以下文件:

/* 0 */ 
{ 
    "_id" : ObjectId("550999a3c89ce9e17ea01845"), 
    "user" : "Chris", 
    "allRecipt" : [ 
     { 
      "update_time" : NumberLong(1426690563), 
      "recipt_Number" : NumberLong(4) 
     } 
    ] 
} 

/* 1 */ 
{ 
    "_id" : ObjectId("550999a3c89ce9e17ea01846"), 
    "user" : "Chris", 
    "allRecipt" : [ 
     { 
      "update_time" : NumberLong(1426690563), 
      "recipt_Number" : NumberLong(8) 
     } 
    ] 
} 

你可以嘗試以下的聚合集,它返回你所需要的:

Recipt.aggregate([ 
    {$match: {user: req.params.name}}, 
    {$unwind: '$allRecipt'}, 
    {$project:{ "allRecipt.recipt_Number": 1 }}, 
    {$sort:{ "allRecipt.recipt_Number": -1 }}, 
    {$limit: 1}  
], function (err, result) { 
    if (err) { 
     console.log(err); 
     return; 
    } 
    console.log(result); 
}); 

返回:

{ 
    "result" : [ 
     { 
      "_id" : ObjectId("550999a3c89ce9e17ea01846"), 
      "allRecipt" : { 
       "recipt_Number" : NumberLong(8) 
      } 
     } 
    ], 
    "ok" : 1 
} 
+0

thnx ..讓我得到我想要的 – 2015-03-20 05:02:44