同一文档中3个字段的平均值

got

我在数据库中存储的文档具有完全相同的“模式”。每个文档都有三个浮点值(键是“ A”,“ B”和“ C”),我需要做的是输出每个文档的投影值,作为这三个值的平均值。

我还需要除以100,所以我的计算是(A + B + C)/ 3/100。据我了解,我需要将每个文档投影为不同的输出,但是$ group在这里没有用(因为我没有对所有文档取平均值,而是对每个文档取平均值)。

我首先需要能够将其编写为MongoDB命令,然后再将其转换为PHP。我想我可以做PHP部分,但我需要的是对实际MongoDB命令入门的帮助...

db.measurements.aggregate(   )

我的数据存储如下:

{ "_id" : ObjectId(xxx), "A": 22.34, "B": 23.32, "C": 75.32, "device_id": 3 }
{ "_id" : ObjectId(xxx), "A": 22.34, "B": 23.32, "C": 75.32, "device_id": 3 }
{ "_id" : ObjectId(xxx), "A": 22.34, "B": 23.32, "C": 75.32, "device_id": 3 }

提交获取请求时,我需要数据如下:

{ "_id" : ObjectId(xxx), "Average of A,B,C": 40.50, "device_id": 3 }
{ "_id" : ObjectId(xxx), "Average of A,B,C": 40.50, "device_id": 3 }
{ "_id" : ObjectId(xxx), "Average of A,B,C": 40.50, "device_id": 3 }

经过进一步研究,似乎不是我应该在这里使用的方法吗?如果在插入数据库之前计算php模型中的平均值,然后通过find()方法检索文档,会更好吗?

克列丹

您本质上需要的是单$project管道聚合-它会使用可用算术运算符为您计算平均值,并将修改同一管道内的结果以将该字段作为计算的表达式((A + B + C)/3)/100(如果需要百分比,则需要相乘而不是除法,即计算为((A + B + C)/3)*100通过以下操作概括说明:

db.measurements.aggregate([
    {
        "$project": {               
            "device_id": 1,
            "Average of A,B,C": {
                "$divide": { // ( A + B + C )/3 )/100
                    {
                        "$divide": [ // (A + B + C )/3
                            { "$add": [ "$A", "$B", "$C" ] }, // A + B + C
                            3
                        ]
                    },
                    100
                }
            }
        }
    }
])

话虽如此,最好在应用程序层中执行繁重或复杂的计算任务,并让mongo最好地执行其数据持久性任务。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用字段值更新同一文档中的另一个字段

在Firestore交易中更新同一文档的多个字段时的定价

在每个文档中添加一个新字段,并在mongodb中为同一文档的另一个字段赋值

在Mongoose的同一文档中查询3个不同嵌套数组中的字段?

在猫鼬模式中创建一个字段,该字段引用同一文档中的其他字段

使用聚合将文档的一个字段与同一文档的数组大小进行匹配

在 Firestore 中更新同一文档的 10 个不同字段。顺序重要吗?

如何将特定字段的值分配给 Firestore Swift 中同一文档内的另一个字段?

如何在 ElasticSearch 中比较同一文档中的两个字段?

MongoDB对同一文档中的多个字段进行分组和计算结果

比较同一文档的两个字段

用同一文档中数组的第一个元素替换字段值

使用同一文档中的字段减少 mongodb 中的字段

如何在同一文档中检查 6 个值中的任意 3 个

MongoDB:更新同一文档的嵌套元素中的字段

比较同一文档中的两个数组字段

如何在mongo中匹配来自同一文档的字段值?

在多个网站中引用同一文档

同一文档中的不同内容

同一文档中的img src = svg

如何连接同一文档中的数组?

如何在mongo中检查同一文档中的两个值?

如何在同一文档下检索Firebase Firestore多个字段数据到RecyclerView

如何在MongoDB更新中将字段的值推入同一文档的另一个数组字段中

过滤Elasticsearch结果以仅包含基于一个字段值的唯一文档

如何根据两个字段值导出唯一文档?

MongoDB:使用同一文档中对象的属性重新塑造文档

同一文档中以及文档之间的Concat数组

根据同一文档中的时间戳属性更新Firestore文档上的属性