1

我敢肯定,我缺少一些相对明显的东西。基本上,尽管使用了 $avg 和 $sum:1 函数,这两个查询返回完全相同的结果,据我了解,第一个查询应该返回先前分组的行数的平均值?

db.bbservicedata.aggregate( 
{ 
   $match:{"accesstime" : {"$gte" : ISODate('2012-02-09T01:45:32.962Z') }}
},  

{
   $match:{"requestModel.serviceName" : "ContentItem"}},    
{

   $unwind: "$requestModel.methodParams.ContentItemLoggingListModel.items"},

{ 

$group: {
 _id:{
   myYear:{$year:"$accesstime"},
   myMonth:{$month:"$accesstime"},
   myDay:{$dayOfMonth:"$accesstime"}}, 
   count:{$sum:1}}}, 
{ 
$group: {
 _id: {
   year: "$_id.myYear",
   month: "$_id.myMonth",
   day: "$_id.myDay"}, 
   averagecount : {$avg : "$count"}}},  

   //{averagecount : {$sum: "$count"}}}***, -- Returns the same result*

 {$sort: {averagecount:-1}} 
);

任何帮助将不胜感激,在此先感谢!

4

1 回答 1

2

您的第二个$group使用与第一个相同的_id术语,因此每个_id. 在那种情况下$avg总是会相等$sum

于 2013-02-15T20:26:52.557 回答