2016-07-21 53 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

谢谢,我会编辑它。 –