raw(function(\Jenssegers\Mongodb\Collection $collection) use ($numberOfRandomItems, $sfw, $unapproved) { $sfwFilter = [ 'demographics.mal_id' => [ '$nin' => [ Constants::GENRE_ANIME_HENTAI, Constants::GENRE_ANIME_EROTICA, Constants::GENRE_MANGA_HENTAI, Constants::GENRE_MANGA_EROTICA ] ], 'rating' => ['$ne' => AnimeRatingEnum::rx()->label], 'type' => ['$ne' => MangaTypeEnum::doujin()->label], 'genres.mal_id' => ['$nin' => [ Constants::GENRE_ANIME_HENTAI, Constants::GENRE_MANGA_HENTAI ]] ]; $pipelineParams = [ ['$sample' => ['size' => $numberOfRandomItems]] ]; if ($sfw && $unapproved) { array_unshift($pipelineParams, [ '$match' => [ ...$sfwFilter, 'approved' => false ] ]); } else if ($sfw) { array_unshift($pipelineParams, ['$match' => $sfwFilter]); } else if ($unapproved) { array_unshift($pipelineParams, ['$match' => ['approved' => false]]); } return $collection->aggregate($pipelineParams); }); } }