PHP7+mongoDB+aggregate

3 篇文章 0 订阅

语句解释:返回指定时间段内,每个来源下的每个媒体的文章总数

match:匹配pub_time大于等于+小于条件

project:返回的列

group:_id内的为分组的列,nums为聚合后的列名称,$sum为求和,1表示求和的是行数(如果把1替换成某列名称则为该列求和)

ps:其他聚合条件参考文档

mongdb客户端操作:

db.article.aggregate([
    { $match:{pub_time:{$gte:1546819200,$lt:1546905600}}},
    {$project:{source:1,media:1}},
    {$group:{_id:{source:'$source',media:'$media'}, nums:{$sum:1}}}
]);

PHP7操作:



​$command = [
             'aggregate' => 'article',
             'pipeline' => [
                 ['$match' => [ 'pub_time' => ['$gte'=>1546819200, '$lt'=>1546905600] ]],
                 ['$group' => [ '_id' => ['source'=>'$source','media'=>'$media'], 'nums' => ['$sum'=>1] ] ],
                 ['$limit' => 10],
             ],
             'cursor' => new \stdClass,
        ];  
 
        $cursor = $mongo->command($command);
        foreach ($cursor as $document) {
             var_dump($document);
         }

PS:如果要更新某个字段嵌套的对象(fields数组中某一字段用field.key)

其中用到的PHP7+mongodb的类库参考:https://blog.csdn.net/why444216978/article/details/85329366

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AirGo.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值