我试图执行一个MongoDB 聚合使用PHP查询。MongoDB聚合与PHP
基本上,我得到了波纹管查询,并将其使用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's 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]
];
谢谢!