计算数组中评分的平均值,然后将字段添加到MongoDB中的原始文档

E.SK

我有一个文档,其中有一个名为“评级”的字段。这是一个对象数组,每个对象都包含userId和ratingValue

ratings: Array
 0: Object
  userId: "uidsample1"
  ratingValue: 5
 1: Object
  userId:"uidsample2"
  ratingValue:1.5

我想做一个汇总管道,以在更新或添加数组中的一个评分时计算新的平均值。然后,我想将该值作为一个称为averageRating的新字段放入文档中。

我试过平仓,然后$ avg的$ add字段:“ ratings.ratingValue”,但它添加到平仓的文档中,但没有得到平均值。看起来像这样(自从在指南针上测试之后就不完全一样)

db.test.aggregate{
  [
    {
    $unwind: {
    path: "$ratings"
    }
  },
  { 
    $addFields {
    averageRating: {
    $avg: "$ratings.ratingValue"
      }
    }

      }
    ]
  }

有什么好的查询结构?

萨拉瓦那

你实际上并不需要$unwind,并$group计算平均值,这些操作是昂贵的

你可以简单地$addFields$avg

db.col.aggregate([
    {$addFields : {averageRating : {$avg : "$ratings.ratingValue"}}}
])

样本收集与汇总

> db.t62.drop()
true

> db.t62.insert({data : {ratings : [{val : 1}, {val : 2}]}})
WriteResult({ "nInserted" : 1 })

> db.t62.find()
{ "_id" : ObjectId("5c44d9719d56bf65be5ab2e6"), "data" : { "ratings" : [ { "val" : 1 }, { "val" : 2 } ] } }

> db.t62.aggregate([{$addFields : {avg : {$avg : "$data.ratings.val"}}}])
{ "_id" : ObjectId("5c44d9719d56bf65be5ab2e6"), "data" : { "ratings" : [ { "val" : 1 }, { "val" : 2 } ] }, "avg" : 1.5 }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

计算数组列表的平均值?

Java如何计算数组中数字的平均值?

计算嵌入式文档/数组中字段的平均值

计算数据框中两列的平均值

MongoDB聚合-文档数组中特定值的平均值

MySQL将ID计数的平均值添加到ID的现有选择中

计算数据框中的平均值并添加到新列

按Mongodb中其字段的平均值计算文档

如何计算数组中对象值的动态平均值?

计算数组中的平均值并在页面加载,Vue中显示它们

将平均值添加到ggplot中的直方图

如何仅使用Python中的正数来计算数组的列平均值?

计算数据库SQL中的平均值

计算每个数字列的平均值,并作为结果添加到行中

计算数组的列中的值的平均值?

计算数组的平均值

从数组中读取并计算平均值

MongoDB:计算文档的平均值,然后在整个集合中执行相同的操作

用于计算数组中数字的最低,最高和平均值的小程序(调用C ++)

尝试将总体平均值添加到此SQL查询中。

Mongodb:将字段添加到嵌入式文档中(无数组)

如何使用列的平均值将列添加到DataFrame中

如何计算数据框中的平均值?

计算数组c ++的平均值

PHP 如何将整个数组添加到 MongoDB 文档字段中

如何递归计算数组中双数的平均值?

Pandas:计算数据框中重复条目的平均值,但值是数组

如何计算数组中已识别项目的平均值?

计算对数和平均值,将结果添加到 R 中的数据集