首页 > 解决方案 > 平均值 mongodb

问题描述

我正在尝试从我的数据中获取值字段的平均值。我有嵌套文档。有一些价值观。我想从此文档中获取字段“值”的平均值。并希望在 c# 应用程序中使用此值

{
        "_id" : ObjectId("5c49f398fc0078178c76705b"),     // my json data
        "Time_Created" : ISODate("2019-01-24T17:19:20.205Z"),   // date
        "Test_ID" : "1",
        "data" : [
                {
                        "Device_id" : "1",
                        "Total_wires" : "5",
                        "Cables" : [
                                {
                                        "TAG" : "4001",
                                        "Value" : 24.3

                                },
                                {
                                        "TAG" : "4002",
                                        "Value" : 21.3

                                },
                                {
                                        "TAG" : "4003",
                                        "Value" : 21.3

                                },
                                {
                                        "TAG" : "4004",

                                        "Value" : 21.3

                                },                                                            
                                {
                                        "TAG" : "4005",                                        
                                        "Value" : 100.3

                                }
                        ]
                }
        ]
}

db.collection_name.aggregate( [  {$unwind: "$data"}, { $group : { _id : "$data.Cables.Value", avgValue: { $avg : "$data.Cables.Value"} } } ] );

我得到这个结果:

{ "_id" : [  24.3, 21.3, 21.3, 21.3, 100.3 ], "avgValue" : null }

但这就是我所期待的

{ "_id" : [  24.3, 21.3, 21.3, 21.3, 100.3 ], "avgValue" : 37.7 }   

37.7是所有值24.321.321.321.3和的平均值100.3

标签: mongodbaverage

解决方案


试试下面的管道。

[
    { 
        '$project': {
            'values': '$data.Cables.Value',
        }
    }, {
        '$unwind': '$values'
    }, {
        '$addFields': { 'avgValue':
            { '$avg': '$values'}
        }
    }
])

推荐阅读