繁体   English   中英

PHP Mongo数据库聚合框架$“ limit”阶段不起作用

[英]PHP Mongo db aggregation framework $“limit” stage not working

我有这个聚合查询:

$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,
        )
    );

一切正常,我得到了我的结果,但是$ limit阶段不起作用,所以我得到了150000个文档,而不是10个。

我已经尝试过['$limt' => 10]语法,但是这些解决方案['$limt' => 10]适合我。 能帮上忙吗? 提前大礼

更新:'$ sort'也无效。

更新:这是我的文件之一:

{
"_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}})

此查询用于检索日期范围(基于meta.yearmonthday)中每种页面类型(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
}

DAMMMMNN,查询中没有错误,这是nginx .... THX伙计们

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM