Mangoos平均评级返回null,如何在mongoDB中使用Aggregator函数

问题描述

我在MongoDB中收集了以下文档,我试图获取评分和计数的平均值,但始终获取Null作为平均值。请帮忙,我还检查了评级字段类型是否为数字,该数字应返回5作为平均值

[
    {
        "create_date": "2020-08-10T16:40:55.838Z","_id": "5f31789c41b89e1b1c47bf4e","first_name": "dd","last_name": "sds","email": "guru@sds.com","phone": "23123212","services": [
            {
                "_id": "5f3181399c22ce892c29e916","amount": 10,"service": "5f2fc9fc54ed4528c899ca13"
            }
        ],"address": [
            {
                "_id": "5f341872ef6a6a44f0a307f5","street": "guru@sds.com","city": "asdfgh","state": "czxczx","postal": "324324"
            },{
                "_id": "5f341877ef6a6a44f0a307f6","postal": "324324"
            }
        ],"ratings": [
            {
                "_id": "5f356ee07f72d453d04e7bdf","rating": 5,"jobId": "5f34233efe7fca44447a8454","ratingBy": "5f3172905a9f542cccf8205f"
            },{
                "_id": "5f356f44bb933d0c38999ac5","ratingBy": "5f3172905a9f542cccf8205f"
            }
        ]
    }
]

并尝试从评分中获取计数和平均值,但是它始终返回NULL,我只需要评分数和平均值即可。

我尝试使用下面的代码来获得相同的结果,但未按预期工作,我查看了所有要求相同的帖子数,但仍然没有得到我的结果,不知道我在哪里弄错了。

let docs = await Provider.aggregate([
  { $match: { _id: ObjectId("5f31789c41b89e1b1c47bf4e") } },{
    $group: {
      _id: "$ratings._id",average: { $avg: "$ratings.rating" },},]);

预先感谢您的帮助。

解决方法

我发现下面的代码对我来说很有效

  let userInfo = await Provider.aggregate([
      { $match: { _id: ObjectId(req.params.userid) } },{
        $addFields: {
          averageRating: {
            $avg: "$ratings.rating",},]);

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...