我正在使用jenssegers/laravel-mongodb开发一个基于MongoDB数据库的Laravel API。
我正试图使用正则表达式来过滤获取一些特定的数据。在这个插件的教程中,我找到了以下内容:
User::where('name', 'regex', new MongoRegex("/.*doe/i"))->get();
所以我的代码看起来像这样:
School::where('name', 'regex', new MongoRegex("/haags/i"))->get();
但结果为空。当我输出查询时,它看起来像这样:
db.schools.find({"name":{"$regex":{"regex":"haags","flags":"i"}}})
当我在控制台中使用该查询时,它会显示:
error: {
"$err" : "Can't canonicalize query: BadValue $regex has to be a string",
"code" : 17287
}
我也尝试过:
School::where('name', 'regexp', "/haags/i")->get();
但这给了我这个查询:
db.schools.find({"name":{"$regex":"\/haag\/i"}})
这似乎可以避免斜杠并使正则表达式无效。除此之外,正则表达式不应该用引号括起来,或者应该像MongoDB手册中找到的那样:
db.products.find( { description: { $regex: /^S/, $options: 'm' } } )
在转换为MongoDB查询时,出现了问题,或者是我做错了什么。请问有人能告诉我这是什么问题吗?