使用 MongoDB 和 Laravel 的文本搜索

Using text search with MongoDB and Laravel

我正在使用 jenssegers/laravel-mongodb 包来将 MongoDB 与 Laravel 一起使用:

我正在尝试使用以下命令通过 MongoDB 实现文本搜索:

db.place.find({$text:{$search:"hotel"}})
但我不知道如何将此查询转换为与上述包和 Laravel.

一起使用

嗯,真有趣,我刚找到答案。这是从文本搜索中获取结果的代码:

\DB::collection('place')->raw()->find(array('$text'=>array('$search'=>'hotel')))->getNext();

你可以使用whereRaw方法。

Place::whereRaw(['$text' => ['$search' => 'hotel']])->get();

您甚至可以使用 laravel query scope 来定义您可以在整个应用程序中轻松重复使用的通用约束集。

放置模型

public function scopeContains($query, $search)
{
    return $query->whereRaw(['$text' => ['$search' => $search]]);
}

放置控制器

Place::contains('hotel')->get();