Я искал в Интернете возможное решение этой проблемы, но все, что я могу найти, - это поиск значений в массиве. В моих коллекциях сообщений есть поле summary
, в котором содержится сводка абзаца определенного сообщения. У меня также есть массив слов, и я хотел бы проверить, присутствует ли хотя бы одно из этих слов в резюме, но я не уверен, как это сделать. Я использую пакет для laravel под названием jenssegers, чтобы сделать свои запросы, поэтому поиск ресурсов о том, как правильно выполнять агрегированные запросы, очень ограничен. Я хотел бы возвращать каждое сообщение, чье резюме содержит хотя бы одно слово из отправляемого массива. Это вообще возможно?
это мой запрос
$post = Post::raw(function ($collection) use ($request) {
return $collection->aggregate(
[
[
'$elemMatch' => [
'summary' => $request->input('interests')
],
],
[
'$lookup' => [
'as' => 'edits',
'from' => 'editorial',
'foreignField' => '_id',
'localField' => 'edit_id',
],
],
]
);
});
$request->input('interests')
- это массив, отправляемый из моего интерфейса, который состоит из массива интересного типа ['magic','swords','legion']
Не уверен, какой подход к этому и любая помощь будет принята с благодарностью