Mongodb Nodejs驱动程序聚合查询不返回数据

时间:2017-08-01 12:25:14

标签: node.js mongodb

我的Mongodb aggreage查询在RoboMongo shell中工作正常,并给我正确的结果。

Robo Mongo Shell查询

db.getCollection('application-filters').aggregate(
{

      $match: { 


          "StatusName" : {$in:["Rejected","Expired"]}


}},
{
$group:{
    _id: "$StatusName", COUNT : { "$sum":1} 
}},
{
$project: {
    StatusName:1,
    Count : "$COUNT"
}
},
{
    $sort:{
        Count:-1
    }
}
)

我已复制并粘贴相同的查询并尝试使用nodejs mongodb 2.2驱动程序执行。它没有给我任何结果

这是JavaScript代码

module.exports = mPool => {
  return {
    getcountbyStatus (countstatusfilterParams) {
      console.log(countstatusfilterParams)
      return mPool.collection('application-filters').aggregate(
        {

          $match: {

            'StatusName': {$in: ['Rejected', 'Expired']}

          }},
        {
          $group: {
            _id: '$StatusName', COUNT: {'$sum': 1}
          }},
        {
          $project: {
            StatusName: 1,
            Count: '$COUNT'
          }
        },
        {
          $sort: {
            Count: -1
          }
        }
).toArray(function (err, data) {
  if (!err) {
    console.log(data)
  }
})
    }
  }
}

任何帮助都将受到高度赞赏。

由于

1 个答案:

答案 0 :(得分:0)

你试过这个:

db.collection.aggregate([
      // do your query
]).toArray(function(err, docs) {
      // do something
}

所以在这种情况下你的Mongodb聚集应该是:

module.exports = mPool => {
  return {
    getcountbyStatus (countstatusfilterParams) {
      console.log(countstatusfilterParams)
      return mPool.collection('application-filters').aggregate([
        {

          $match: {

            'StatusName': {$in: ['Rejected', 'Expired']}

          }},
        {
          $group: {
            _id: '$StatusName', COUNT: {$sum: 1}
          }},
        {
          $project: {
            StatusName: 1,
            Count: '$COUNT'
          }
        },
        {
          $sort: {
            Count: -1
          }
        }
]).toArray(function (err, data) {
  if (!err) {
    console.log(data)
  }
})
    }
  }
}