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
}
nginxのでした。 – JST
@JSTカンマの有無にかかわらず、結果は同じようです! –
'$ limit'パイプラインステージ' array( '$ limit' => 5、 )を '$ project'ステップの直後に置く理由は何ですか?最後に別の '$ limit'をしますか? – chridam