我使用jenssegers/laravel-mongodb包将MongoDB与Laravel一起使用:
我正在尝试使用此命令使用MongoDB实现文本搜索:
db.place.find({$text:{$search:"hotel"}})但我不知道如何将此查询翻译为使用上述包和Laravel。
答案 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();