我正在使用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#驱动程序。 我正在尝试放松,然后数数。但这不起作用。
答案 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
}