2016-05-24 18 views
0

を働いていない私は、この集計クエリを持っている:

$paroles_query = array(
      array(
       '$match' => array(
        'metadata.content_type' => 'parole', 
        'metadata.yearmonthday' => array(
         '$gte' => $ymd_begin,//20160516 
         '$lt' => $ymd_end //20160522 
        ), 
       ), 
      ), 

     array(
      '$project' => array(
       'yearmonthday' => '$metadata.yearmonthday', 
       'content_id' => '$metadata.content_id', 
       'total' => array(
        '$add' => $add, 
       ), 
      ), 
     ), 

     array(
      '$sort' => array(
       'total' => -1, 
      ), 
     ), 
     array(
      '$group' => array(
       '_id' => '$content_id', 
       'total' => array('$sum' => '$total') 
      ), 
     ), 
     array(
      '$limit' => 10, 
     ) 
    ); 

すべてが正常に動作し、私は私の結果を得るが、$リミットステージはそれほど作品はありません、私は150 000を得ました文書の代わりに

私は['$limt' => 10]構文を試しましたが、これらの解決法のどれも私のためには機能しません。 は助けをenyoneできますか?事前に大きなthx

更新: '$ソート'も動作しません。

UPDATE:ここでは私のドキュメントの1つである:

{ 
"_id" : ObjectId("5740a27af32d054114687c65"), 
"metadata" : { 
    "app" : "web", 
    "content_id" : "106366780", 
    "content_type" : "traduction", 
    "yearmonthday" : 20160521, 
    "device_id" : "9615b7451e0031e15fcbc5c064418a8abb2740dd", 
    "notification_channel" : "web", 
    "year" : 2016, 
    "month" : 5, 
    "day" : 21, 
    "hour" : 23, 
    "minute" : 24, 
    "weekday" : 6, 
    "yearmonth" : 201605 
}, 
"hourly" : { 
    "18" : 1, 
    "23" : 1 
}, 
"minute" : { 
    "18" : { 
     "1" : 1 
    }, 
    "23" : { 
     "24" : 1 
    } 
}, 
"new" : { 
    "hourly" : { 
     "18" : 1, 
     "23" : 1 
    }, 
    "minute" : { 
     "18" : { 
      "1" : 1 
     }, 
     "23" : { 
      "24" : 1 
     } 
    } 
} 

}

そしてここでMongoDBのクエリです(作品まったく問題あり):

db.getCollection('visitors_daily').aggregate({$match : {"metadata.content_type" : "parole", "metadata.yearmonthday" : { $gte : 20160516, $lt: 20160523}}},{$project : { total :{$add : [{$ifNull : ["$hourly.0",0]},{$ifNull : ["$hourly.1",0]},{$ifNull : ["$hourly.2",0]},{$ifNull : ["$hourly.3",0]},{$ifNull : ["$hourly.4",0]},{$ifNull : ["$hourly.5",0]},{$ifNull : ["$hourly.6",0]},{$ifNull : ["$hourly.7",0]},{$ifNull : ["$hourly.8",0]},{$ifNull : ["$hourly.9",0]},{$ifNull : ["$hourly.10",0]},{$ifNull : ["$hourly.11",0]},{$ifNull : ["$hourly.12",0]},{$ifNull : ["$hourly.13",0]},{$ifNull : ["$hourly.14",0]},{$ifNull : ["$hourly.15",0]},{$ifNull : ["$hourly.16",0]},{$ifNull : ["$hourly.17",0]},{$ifNull : ["$hourly.18",0]},{$ifNull : ["$hourly.19",0]},{$ifNull : ["$hourly.20",0]},{$ifNull : ["$hourly.21",0]},{$ifNull : ["$hourly.22",0]},{$ifNull : ["$hourly.23",0]}]},ymd : "$metadata.yearmonthday" , content_id :"$metadata.content_id"}},{$group : {_id : "$content_id","total" : {$sum : "$total"}}}, {$sort : {"total" : -1}}) 

このクエリは、取得するためであります(メタデータに基づく)日付範囲の1ページあたりの訪問数(content_type)、これはmongo dbでの私の5番目の結果です:

{ 
    "_id" : "104846552", 
    "total" : 227 
} 

/* 2 */ 
{ 
    "_id" : "100611974", 
    "total" : 151 
} 

/* 3 */ 
{ 
    "_id" : "107373971", 
    "total" : 127 
} 

/* 4 */ 
{ 
    "_id" : "1766982", 
    "total" : 124 
} 

/* 5 */ 
{ 
    "_id" : "100842840", 
    "total" : 115 
} 
+0

nginxのでした。 – JST

+0

@JSTカンマの有無にかかわらず、結果は同じようです! –

+0

'$ limit'パイプラインステージ' array( '$ limit' => 5、 )を '$ project'ステップの直後に置く理由は何ですか?最後に別の '$ limit'をしますか? – chridam

答えて

0

DAMMMMNN、クエリでエラーなしには、それはあなたの配列であまりにも多くのカンマがあるように思え.... THXみんな