尝试用'$ expr'和find()在猫鼬中进行'分组'时出错

时间:2018-08-03 18:40:34

标签: javascript node.js mongodb mongoose

我正在尝试按movieId领域对一些结果进行分组。

我不断收到错误消息。

代码如下:

   router.get("/best-sellers2", (req, res) => {
    Show.find({
        '$expr': {
            $group: {
                _id: '$_MovieId',
                count: { $sum: 1 }
            }
        }
    }, {}).then(shows => {
        console.log('got all shows of a specific movie');
        console.log(shows);
        res.json(shows);
    });
});

这是错误:

(node:6524) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): MongoError: Unrecognized expression '$group'

(node:6524) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

有人知道出什么问题吗?

谢谢

1 个答案:

答案 0 :(得分:1)

简单的聚合将起作用:

Show.aggregate([{
  "$match" : {
    "movieId": ObjectId("5b649c81e361853956b35900"),
  }
},{
  $group: { 
    "_id" : "$movieId",
    "count" : {"$sum": 1}
  }
}]);
  

输出:

{
  "_id" : ObjectId("5b649c81e361853956b35900"),
  "count" : 2.0
}

希望这对您有所帮助。

让我知道您是否需要更具体的查询。

如果是的话,请在问题中添加更多代码,以了解数据是什么,输出结果是什么。