检查是否可以在字段中找到数组中的至少一个单词

I've been searching the web for a possible solution to this but all i can find is looking for values in an array. I have a field in my posts collections called summary which contains a paragraph summary of a specific post. I also have an array of words and I would like to check if at least one of those words are present in the summary, but i'm not sure how to go about this. I'm using a package for laravel called jenssegers to make my queries so looking for resources on how to properly do aggregate queries are very limited. I'd like to return every post whose summary contains at least one word from the array being sent. Is this even possible?

this is my query

$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') is an array being sent from my front-end which comprises of an array of interes like ['magic','swords','legion']

Not sure what approach to take to this and any help would be greatly appreciated

I would recommend using a regular expression in combination with laravel, this would look something like:

$searchTerms = ['magic','swords','legion'];
$regex = ".*(".implode("|", $searchTerms).").*"; 
YourModel::where("summary", "regexp", $regex)->get();

Here the regex will produce .*(magic|swords|legion).*, which will match any one of these with anything on either side

You can use the $or and $regex operators to search inside string fields:

db.posts.find({ "$or": [
    { "summary": { "$regex": "some" }, $options: 'i' }, 
    { "summary": { "$regex": "words" }, $options: 'i' }, 
    { "summary": { "$regex": "to" }, $options: 'i' }, 
    { "summary": { "$regex": "match" }, $options: 'i' }
]})

The i option makes it case insensitive.

If you're doing a lot of text searching, you may want to look at collations.