Я пытаюсь выполнить запрос MongoDB , содержащий с использованием PHP.MongoDB aggregate with 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]
];
Спасибо!