Node.js在collection.aggregate查询

时间:2016-07-21 14:52:57

标签: node.js mongodb


这可能是一个愚蠢的问题,但我已经绝望了!我需要做这个查询:

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

而且,如果我在mongo bash上复制这个,我就回复了: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);
    }
  );
});

这会“忽略”$ sort并将此返回给我:Interface Return
现在,我的问题是......为什么!?我能做些什么来解决它?

1 个答案:

答案 0 :(得分: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);
    }
  );
});