为了账号安全,请及时绑定邮箱和手机立即绑定

mongoose count()方法查询的结果如何以数组返回?

mongoose count()方法查询的结果如何以数组返回?

慕沐林林 2019-02-25 20:23:12
我想用mongoose的count方法查询stations集合里各个部门的数量,push进一个数组然后返回给Echarts,可是响应的却是空的数组,请教各位大神应该怎么解决?router.get('/chart', function (req, res, next) {  let depts = ['部门1', '部门2', '部门3', '部门4', '部门5',    '部门6', '部门7', '部门8'];  let department = [];  for(let x in depts){    stations.count({"dept": depts[x]}).exec(function (err, counts) {      department.push(counts);    });  }  res.json(department);});
查看完整描述

6 回答

?
慕数据1385771

TA贡献5条经验 获得超0个赞

// 因为mongodb或者mongoose都是通过回调返回结果的,所以通过await实现同步数据

let data = await Users.find();
查看完整回答
反对 回复 2021-08-02
?
慕数据1385771

TA贡献5条经验 获得超0个赞

// 因为mongodb或者mongoose都是通过回调返回结果的,所以通过await实现同步数据

let data = await Users.find();
查看完整回答
反对 回复 2021-08-02
?
慕数据1385771

TA贡献5条经验 获得超0个赞

// 因为mongodb或者mongoose都是通过回调返回结果的,所以通过await实现同步数据

下面的data就是数组的了

let data = await Users.find();
查看完整回答
反对 回复 2021-08-02
?
慕数据1385771

TA贡献5条经验 获得超0个赞

 // 因为mongodb或者mongoose都是通过回调返回结果的,所以通过await实现同步数据

let data = await users.find();

这个data就是数组的了


查看完整回答
反对 回复 2021-08-02
?
PIPIONE

TA贡献1829条经验 获得超9个赞

let department = [];

  let asynQuery = () => {

    return new Promise( (resolve, reject) => {

      stations.aggregate([{$group: {_id: "$dept", count: {$sum: 1}}}]).exec(function (err, doc) {

        department.push(doc);

        resolve(department);

      });

    });

  }

  asynQuery().then(department=>{

    res.json(department)

  });

原来是异步的问题,通过Promise解决了


查看完整回答
反对 回复 2019-03-13
?
互换的青春

TA贡献1797条经验 获得超6个赞

用Aggregation吧,很好实现。你这样得查n次,用aggregation只用一次查出所有。以下是shell示例(并不太熟悉mongoose...)


let department = []

db.stations.aggregate([

    {$group: {_id: "$dept", count: {$sum: 1}}}

]).forEach(doc => {

    department.push(doc.count);

});


查看完整回答
反对 回复 2019-03-13
  • 6 回答
  • 0 关注
  • 1083 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信