Javascript MongoDB与PHP的聚合

Javascript MongoDB与PHP的聚合,javascript,php,mongodb,aggregation-framework,Javascript,Php,Mongodb,Aggregation Framework,我正在尝试使用PHP执行MongoDB聚合查询 基本上,我得到了下面的查询,当使用MongoDB Shell时,它执行起来没有问题: db.getCollection('frete').aggregate([ {$match : { '$and': [ { 'data_UTC': {$gte: ISODate('2017-01-20T00:00:00-02:00'), $lt: ISODate('2017-01-29T00:00:00-02:00'

我正在尝试使用PHP执行MongoDB聚合查询

基本上,我得到了下面的查询,当使用MongoDB Shell时,它执行起来没有问题:

db.getCollection('frete').aggregate([
    {$match : {
        '$and': [
            { 'data_UTC': {$gte: ISODate('2017-01-20T00:00:00-02:00'), $lt: ISODate('2017-01-29T00:00:00-02:00') } },
            { 'carga': { $regex : new RegExp('soja', "i") }}
        ]
    }
    },
    {$group : {_id: { $dateToString: { format: "%Y-%m-%d", date: { $subtract: ['$data_UTC', 1000 * 60 * 60 * 2] } } }, qtd_acessos: {$sum:1} }},
    { $sort: { _id: -1 } },
    { $limit: 50}
])
但是,当我尝试通过PHP执行相同的查询时(我的
composer.json
正在使用
“mongodb/mongodb”:“^1.0.0”
依赖项),调用
mongodb PHP的aggregate()
方法后不会返回响应:

有人能帮我把上面的查询翻译成它的PHP等价物吗?我有以下信息,但也许我遗漏了什么:

$start = new \MongoDB\BSON\UTCDateTime(strtotime('2017-01-20T00:00:00-02:00'));
$end = new \MongoDB\BSON\UTCDateTime(strtotime('2017-01-29T00:00:00-02:00'));
$regex = new \MongoDB\BSON\Regex('soja', 'i');

$filter = [
    ['$match' => [
            '$and' => [
                ['data_UTC' => ['$gte' => $start, '$lt' => $end]],
                ['carga' => ['$regex' => $regex]]
            ]
        ]
    ],
    ['$group' => ['_id' => ['$dateToString' => ['format' => "%Y-%m-%d", 'date' => ['$subtract' => ['$data_UTC', 1000 * 60 * 60 * 2]]]], 'qtd_acessos' => ['$sum' => 1]]],
    ['$sort' => ['_id' => -1]],
    ['$limit' => 50]
];

谢谢

检查mongodb标准库将为您提供服务

 $pipeline = array(
                    array('$match' => 
                                    array('$and' =>
                                            array(  array('data_UTC' => array('$gte' => new MongoDate(strtotime('2017-01-20T00:00:00-02:00')), $lt: new MongoDate(strtotime('2017-01-20T00:00:00-02:00')))),
                                                    array('carga' => array($regex => new MongoRegex("/soja$/i")))
                                                )
                                        )
                        ),
                    array('$group' =>   array ('_id' => array('$dateToString' => array('format' => "%Y-%m-%d", 'date' => array('$subtract' => array('$data_UTC', 1000 * 60 * 60 * 2)))),
                                                     'qtd_acessos' => array('$sum' => 1 ) ),
                                        array('$sort' => array(_id => -1)),
                                        array('$limit' => 50)
                        )
                )

    $this->mongodb->aggregate($pipeline, 'db_collection_name');