【发布时间】:2015-06-15 23:29:58
【问题描述】:
我正在使用 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 查询时出现问题,或者我做错了什么。谁能告诉我这是什么?
【问题讨论】:
-
您的问题有解决方案吗?我也有 ;-) 谢谢
-
我停止使用 mongoDB 并继续前进,问题太多了......
-
2016-07-31 - 同样的问题...
标签: php regex mongodb laravel-4 jenssegers-mongodb