使用MongoDB和Laravel进行文本搜索

时间:2015-01-13 08:24:37

标签: php mongodb laravel

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

我正在尝试使用此命令使用MongoDB实现文本搜索:     

db.place.find({$text:{$search:"hotel"}})
但我不知道如何将此查询翻译为使用上述包和Laravel。

2 个答案:

答案 0 :(得分:4)

嗯,多么有趣,我刚刚找到了答案。以下是从文本搜索中获取结果的代码:

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

答案 1 :(得分:0)

您可以使用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();