Вот мой код:
$profiles = Profile::raw()->aggregate([
[
'$unwind' => '$channels'
],
[
'$match' => [
'channels.sign_up' => true,
]
],
[
'$match' => [
"city_id" => request()->input('city_id'),
]
],
[
'$match' => [
'created_at' => [
'$gte' => request('start_date', date('Y-m-d') . ' 00:00:00'),
'$lte' => request('end_date', date('Y-m-d') . ' 23:59:59'),
]
]
],
[
'$group' => [
'_id' => '$channels.slug',
'user_count' => ['$sum' => 1]
]
],
[
'$sort' => [
"user_count" => -1
]
]
]);
, где 2-й и 3-й '$match'
необязательны в зависимости от фильтра.если city_id
не пусто, чем я должен добавить 2-й '$match'
, и если start_date
и end_date
не пусто, чем я должен добавить 3-й '$match'
.
Я использую jenssegers / laravel-mongodb .
Требуется предложение:)