1

私が見逃していることは比較的明白なことだと確信しています。基本的に、これら2つのクエリは、$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

2つ目$groupは、最初の用語と同じ_id用語を使用しているため、ごとに常に1つのドキュメントがあります_id。そのような状況$avgでは、常に等しくなり$sumます。

于 2013-02-15T20:26:52.557 に答える