文档中的MongoDB总和值

时间:2019-01-31 00:15:41

标签: c# mongodb

我正在使用MongoDB和C#制作应用程序。我使用MongoDB驱动程序。

{
     _id: ObjectId("5099803df3f4948bd2f98391"),
     Title: "Test",
     Rating: {
          1234 : 4.0,
          4689 : 2.5,
          1987 : 1.5
     }
}

现在,我想获得平均评分。所以(4.0 + 2.5 + 1.5)/ 3。 但是我该如何使用MongoDB和C#驱动程序。 我正在尝试放松,然后数数。但这不起作用。

1 个答案:

答案 0 :(得分:0)

您可以使用$objectToArray(从mongo版本3.4.4开始)将对象转换为数组并计算$avg

db.t71.aggregate([
    {$addFields : {data : {$objectToArray : "$Rating"}}}, 
    {$addFields : {avg : {$avg : "$data.v"}}}
]).pretty()

聚合

> db.t71.aggregate([{$addFields : {data : {$objectToArray : "$Rating"}}}, {$addFields : {avg : {$avg : "$data.v"}}}]).pretty()
{
        "_id" : 1,
        "Title" : "Test",
        "Rating" : {
                "1234" : 4,
                "1987" : 1.5,
                "4689" : 2.5
        },
        "data" : [
                {
                        "k" : "1234",
                        "v" : 4
                },
                {
                        "k" : "1987",
                        "v" : 1.5
                },
                {
                        "k" : "4689",
                        "v" : 2.5
                }
        ],
        "avg" : 2.6666666666666665
}