mongo查询无法正常使用laravel

时间:2018-12-04 08:08:59

标签: php mongodb laravel

我在使用jenssegers在laravel中创建查询时遇到了麻烦。以前我有使用此查询的文章
return Article::where('content', 'LIKE', '%robots%')->get() 效果很好,但是由于没有加入mongo,我不得不求助于$lookup$match,现在我的查询看起来像这样

$regex = '/.*'.$searchTerm.'.*/';   
            $articles = Article::raw(function ($collection) use ($regex) {
                return $collection->aggregate(
                    [
                        [
                            '$match' => [
                                '$or' => [
                                    [
                                        'full_url' => [
                                            '$regex' => $regex,
                                            '$options' => 'i'
                                        ]
                                    ],
                                    [
                                        'content' => [
                                            '$regex' => $regex,
                                            '$options' => 'i'
                                        ]
                                    ],
                                    [
                                        'summary' => [
                                            '$regex' => $regex,
                                            '$options' => 'i'
                                        ]
                                    ],
                                    [
                                        'title' => [
                                            '$regex' => $regex,
                                            '$options' => 'i'
                                        ]
                                    ], 
                                ],

                            ],
                        ],
                        [
                            '$lookup' => [
                                'as' => 'pubs',
                                'from' => 'publications',
                                'foreignField' => '_id',
                                'localField' => 'pub_id',
                            ],
                        ],
                        [
                            '$sort' => [
                                'date' => -1,
                            ],
                        ]
                    ]
                );
            });

return $articles;

使用此查询搜索“机器人”将产生结果,但是搜索“机器人”现在不返回任何内容,我也尝试将正则表达式修改为'/'.$searchTerm.'/';,但这似乎无济于事。与'/^'.$searchTerm.'$/';相同。 $ searchTerm只是一个变量,其中包含要搜索的字符串。有人可以指出我在这里做错什么,即查询语法或正则表达式格式不正确。还是没有$ match还有另一种方法?任何帮助,将不胜感激。谢谢。

0 个答案:

没有答案