从Node.js中的MongoDB查询返回数据

时间:2019-12-15 07:59:52

标签: javascript node.js mongodb express

我刚刚开始学习MEAN堆栈,但我被卡住了。我需要将以下查询数据发送到前端。

router.get('/average', (req, res) => {
  Employees.aggregate([
    { $match: { "position": "sen" } },
    {
      $group: {
        _id: null,
        average: {
          $avg: "$salary"
        }
      }
    }
  ]);
});

我已经尝试过这样做,但是没有用

router.get('/average', (req, res) => {
  Employees.find(function (err, docs) {
    res.json(docs);
  }).aggregate([
    { $match: { "position": "sen" } },
    {
      $group: {
        _id: null,
        average: {
          $avg: "$salary"
        }
      }
    }
  ]);
});

1 个答案:

答案 0 :(得分:2)

在第一个示例中,您没有将数据发送给响应,而在第二个示例中,语法有些混乱。

猫鼬返回一个Promise和/或aggregate值作为响应,因此下面的代码应该可以正常工作:

router.get('/average', (req, res) => {
  Employees.aggregate([
    { $match: { position: 'sen' } },
    {
      $group: {
        _id: null,
        average: {
          $avg: '$salary'
        }
      }
    }
  ])
  .then((result)=>{
    res.json(result)
  })
});

还可以查看猫鼬的文档:https://mongoosejs.com/docs/api/model.html#model_Model.aggregate