如何在Laravel中进行mongodb文本搜索工作?请建议。
我可以在终端上做到 -
db.coupons.find( { $text: { $search: "Search me here" } } )
但不确定如何在laravel中完成。
答案 0 :(得分:1)
要使用laravel mongodb(使用jenssegers / laravel-mongodb)进行搜索,首先需要创建一个索引。例如:private int pointer =0; // define it as an attribute (global variable)
protected void buton_click(){
option[pointer]=optionText;
pointer++; // to be ready for the next index
}
,其中“subject”是要进行搜索的文本的属性。
然后你可以在mongodb中尝试一个查询:db.articles.createIndex( { "subject" : "text" } )
并以这种方式执行laravel:
db.articles.find( { $text: { $search: "coffee" } } )
如果您想按短语搜索,则需要使用引号。在mongodb:$word = "coffee";
$response = Article::whereRaw(array('$text'=>array('$search'=> $word)))->get();
和laravel:
db.articles.find( { $text: { $search: "\"coffee shop\"" } } )
答案 1 :(得分:0)
在您的composer.json中添加jenssegers/laravel-mongodb包并通过composer update
安装。访问添加链接,在那里您将获得处理mongodb-laravel连接的良好来源。
你有没有试过像:
$users = User::with(array('posts' => function($query)
{
$query->where('title', 'like', '%first%');
}))->get();
看看是否有帮助。
答案 2 :(得分:0)
由于您使用https://github.com/jenssegers/laravel-mongodb,根据您的代码,您可以说
$ coupons =优惠券::其中(&#39; $ text&#39; =&gt; [&#39; $ search&#39; =&gt;&#39;在此搜索我&#39;]); < / p>
})) - &GT;得到();