Laravel Mongodb Сырой монго запрос с датой

Я работаю над laravel 5.1 и использую пакет jessenger mongodb.
Я использую необработанный запрос для извлечения данных, но я запутался, как использовать дату с этим, так как в настоящее время он возвращает нулевой результат.

 $resultSet = DB::connection('mongodb')->collection('wc_mycollection')->raw(function ($collection){
return $collection->aggregate([
[
'$match'=>[
'created_at'=>[
'$gte' => Previous day midnight,
'$lt' => Current Time
]
]
],
[
'$group' => [
'_id' => '$some_id',

]
]
]);
});

что я должен делать?

4

Решение

Попробуйте эту опцию:

'$match'=>[
'created_at'=>[
'$gte' => new Date("2016-10-02T00:00:00.000Z"),
'$lt' => new Date("2016-11-02T00:00:00.000Z")
]
]

Видите, если это работает.

0

Другие решения

В laravel есть действительно хороший пакет для обработки дат углерод что вы могли бы использовать с вашими запросами. Если вы хотите получить записи с начала сегодняшнего дня, используйте Carbon’s startOfDay() собственности или чтобы получить предыдущую дату полуночи, используйте Carbon::yesterday()->endOfDay().

Объединяя все это вместе, вы можете построить свой конвейер следующим образом:

$previousDayMidnight = Carbon::yesterday()->endOfDay(); // or $startOfToday = Carbon::now()->startOfDay()
$currentTime = Carbon::now();
$result = DB::collection('wc_mycollection')->raw(function($collection)
{
return $collection->aggregate(array(
array(
'$match' => array(
'created_at' => array(
'$gte' => $previousDayMidnight, // or $startOfToday
'$lt' => $currentDateTime
)
)
),
array(
'$group' => array(
'_id' => '$some_id',
'count' => array(
'$sum' => 1
)
)
)
));
});

Другой подход заключается в том, чтобы использовать объекты MongoDate, вы можете попробовать

$start = new MongoDate(strtotime(date('Y-m-d H:i:s', '-1 days')));
$end = new MongoDate(strtotime(date('Y-m-d H:i:s')));
$result = DB::collection('wc_mycollection')->raw(function($collection)
{
return $collection->aggregate(array(
array(
'$match' => array(
'created_at' => array(
'$gte' => $start,
'$lt' => $end
)
)
),
array(
'$group' => array(
'_id' => '$some_id',
'count' => array(
'$sum' => 1
)
)
)
));
});
0

По вопросам рекламы [email protected]