【问题标题】:Mongodb Finding average of depends on the valueMongodb 查找平均值取决于值
【发布时间】:2021-09-10 10:58:43
【问题描述】:

这是我的收藏,其中包含课程单元列表和字段的信息,以表示单元是否已被阅读。

{
    "_id": "612f5605dc3813a3717663fe",
    "units": [
        {
            "unit": "612f5608dc3813268a766417",
            "alreadyRead": 1
        },
        {
            "unit": "612f5608dc38133ee6766411",
            "alreadyRead": 1
        },
        {
            "unit": "61322aa16c985ae927308a82",
            "alreadyRead": 1
        },
        {
            "unit": "612f560cdc38137394766440",
            "alreadyRead": 0
        },
        {
            "unit": "612f5614dc38139a927664b2",
            "alreadyRead": 0
        },
        {
            "unit": "612f5621dc381387d976653f",
            "alreadyRead": 0
        }
    ]
},
{
    "_id": "612f5622dc381383dd766545",
    "units": [
        {
            "unit": "612f5625dc3813e311766560",
            "alreadyRead": 1
        },
        {
            "unit": "612f5625dc381386bb76655a",
            "alreadyRead": 1
        },
        {
            "unit": "612f5626dc38132a2d766566",
            "alreadyRead": 1
        },
        {
            "unit": "612f5628dc3813a36d7665bd",
            "alreadyRead": 0
        },
        {
            "unit": "612f5626dc3813af32766574",
            "alreadyRead": 0
        },
    ]
},

我想要如下输出。只需要找到取决于alreadyRead 字段的平均值并将其放入avgCompleted。有没有办法做到这一点?

{
    "_id": "612f5605dc3813a3717663fe",
    "units": [
        {
            "unit": "612f5608dc3813268a766417",
            "alreadyRead": 1
        },
        {
            "unit": "612f5608dc38133ee6766411",
            "alreadyRead": 1
        },
        {
            "unit": "61322aa16c985ae927308a82",
            "alreadyRead": 1
        },
        {
            "unit": "612f560cdc38137394766440",
            "alreadyRead": 0
        },
        {
            "unit": "612f5614dc38139a927664b2",
            "alreadyRead": 0
        },
        {
            "unit": "612f5621dc381387d976653f",
            "alreadyRead": 0
        }
    ],
    "avgCompleted": 50
},
{
    "_id": "612f5622dc381383dd766545",
    "units": [
        {
            "unit": "612f5625dc3813e311766560",
            "alreadyRead": 1
        },
        {
            "unit": "612f5625dc381386bb76655a",
            "alreadyRead": 1
        },
        {
            "unit": "612f5626dc38132a2d766566",
            "alreadyRead": 1
        },
        {
            "unit": "612f5628dc3813a36d7665bd",
            "alreadyRead": 0
        },
        {
            "unit": "612f5626dc3813af32766574",
            "alreadyRead": 0
        },
    ],
    "avgCompleted": 60
},

【问题讨论】:

    标签: mongodb aggregation-framework average


    【解决方案1】:

    你只需要使用$avg并乘以100就可以得到你想要的值。

    • 使用$set 创建字段avgCompleted,其中值为100 * $avg
    db.collection.aggregate([
      {
        "$set": {
          "avgCompleted": {
            "$multiply": [
              100,
              {
                "$avg": "$units.alreadyRead"
              }
            ]
          }
        }
      }
    ])
    

    例如here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-14
      • 2021-12-22
      • 1970-01-01
      • 1970-01-01
      • 2022-01-19
      • 1970-01-01
      • 1970-01-01
      • 2018-07-12
      相关资源
      最近更新 更多