2016-07-21 55 views
0


這可能是一個愚蠢的問題,但我已經絕望了!我需要做的這個查詢:

db.clients.aggregate(
{ 
    $group: { 
     _id: '$enterprise', 
     lodging_days: { $sum: '$lodging_days' } 
    } 
}, 
{ 
    $sort : { 
    lodging_days: -1 
    } 
}) 

而且,如果我複製此上蒙戈慶典,我又回到這一點:Bash Return (對不起,我不能上傳圖片還)
就像我想要的!

但是,當我把查詢節點:

router.get('/query', function(req, res){ 
    var db = req.db; 
    var clients=db.get('clients'); 

    clients.aggregate(
    { 
     $group: { 
     _id: '$enterprise', 
     lodging_days: { $sum: '$lodging_days' } 
     } 
    }, 
    { 
     $sort: { 
     'lodging_days': -1 
     } 
    }, 
    function(e, data){ 
     res.json(data); 
    } 
); 
}); 

這種「忽略」了$排序,並返回我:Interface Return
現在,我的問題是...爲什麼!?我能做些什麼來解決它?

+0

嘗試將您的管道封裝到數組中。 'db.collection.aggregate([{},...])' –

+0

你調用'aggregate'的方式並不符合API說你應該調用它的方式。 http://mongodb.github.io/node-mongodb-native/2.2/api/Collection.html#aggregate –

+0

從你的鏈接: //執行聚合,注意管道表示爲一個數組 'collection.aggregate ([])' 我的意思是你需要做下一個'clients.aggregate([你的代碼與組,排序和函數]);' –

回答

1

你需要將你的管道封裝到數組中。

router.get('/query', function(req, res){ 
    var db = req.db; 
    var clients=db.get('clients'); 

    clients.aggregate([ 
    { 
     $group: { 
     _id: '$enterprise', 
     lodging_days: { $sum: '$lodging_days' } 
     } 
    }, 
    { 
     $sort: { 
     'lodging_days': -1 
     } 
    }], 
    function(e, data){ 
     res.json(data); 
    } 
); 
}); 
+1

謝謝。它只需要包裝聚合命令,該功能就會出現在外面。 router.get( '/查詢',函數(REQ,RES){ VAR分貝= req.db; 變種客戶= db.get方法就會( '客戶'); clients.aggregate([{ $ 組:{ _id:「$企業, lodging_days:{$總和: '$ lodging_days'}} } , {$ 排序:{ 'lodging_days':-1 } }], 功能(e,data){ res.json(data); } ); }); –

+0

謝謝,我會編輯它。 –