Py学习  »  MongoDB

文档中的MongoDB和值

Barry The Wizard • 4 年前 • 423 次点击  

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

现在我想得到平均分。所以(4.0+2.5+1.5)/3。 但是我该如何处理MongoDB和C驱动程序。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/53800
 
423 次点击  
文章 [ 1 ]  |  最新文章 4 年前
Saravana
Reply   •   1 楼
Saravana    5 年前

你可以用 $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
}