使用java查找MongoDB中数组元素的平均值

问题描述:

我是MongoDB的新手。我必须找到数组元素的蒙戈DB 例如平均使用java查找MongoDB中数组元素的平均值

{ 
"_id" : ObjectId("51236fbc3004f02f87c62e8e"), 
"query" : "iPad", 
"rating" : [ 
    { 
     "end" : "130", 
     "inq" : "403", 
     "executionTime" : "2013-02-19T12:27:40Z" 
    }, 
    { 
     "end" : "152", 
     "inq" : "123", 
     "executionTime" : "2013-02-19T12:35:28Z" 
    } 
] 
} 

我想要的平均“INQ”里查询:iPad的

这里的输出应该是:

inq=263 

我在谷歌搜索并得到了aggregate method,但无法在Java代码中进行转换。

在此先感谢

问候

+0

没有ü尝试JSON API的Java。看看这里http://json.org/java/ – Akhilesh 2013-02-20 06:32:55

+0

我们如何使用JSON API来实现它?你能举个例子吗? – anilthapliyal 2013-02-20 06:45:11

让我们试着分解这个问题。我将开始:

db.c.aggregate({$match: {query: "iPad"}}, {$unwind:"$rating"}, {$project: {_id:0, 
q:"$query",i:"$rating.inq"}}) 

投影不是必需的,但使其余的一点点更具可读性:

{ 
    "result" : [ 
      { 
        "q" : "iPad", 
        "i" : "403" 
      }, 
      { 
        "q" : "iPad", 
        "i" : "123" 
      } 
    ], 
    "ok" : 1 
} 

因此,我怎么组?当然,通过 “$ Q”:

db.c.aggregate({$match: {query: "iPad"}}, {$unwind:"$rating"}, {$project: {_id:0, 
q:"$query",i:"$rating.inq"}}, {$group:{_id: "$q"}}) : 

{ "result" : [ { "_id" : "iPad" } ], "ok" : 1 } 

现在,让我们添加一些聚合运营商:

db.c.aggregate({$match: {query: "iPad"}}, {$unwind:"$rating"}, {$project: {_id:0, q:"$query",i:"$rating.inq"}}, {$group:{_id: "$q", max: {$max: "$i"}, min: {$min: "$i"}}}) : 

{ 
    "result" : [ 
      { 
        "_id" : "iPad", 
        "max" : "403", 
        "min" : "123" 
      } 
    ], 
    "ok" : 1 
} 

现在到了平均:

db.c.aggregate({$match: {query: "iPad"}}, {$unwind:"$rating"}, {$project: 
{_id:0,q:"$query",i:"$rating.inq"}}, {$group:{_id: "$q", av: {$avg:"$i"}}}); 

试着去理解的MongoDB的Java驱动程序。我可以从mongodb网站获得此链接。请检查:http://docs.mongodb.org/ecosystem/tutorial/use-aggregation-framework-with-java-driver/#java-driver-and-aggregation-framework

+0

我已经看过那个例子,但那不是阵列。我正面临数组问题。 – anilthapliyal 2013-02-20 08:48:45