没有错误,也没有结果。
我的查询如下:
Array
(
[$or] => Array
(
[0] => Array
(
[title] => Array
(
[$regex] => /.*Palmer \- The ArT oF.*/
[$options] => i
)
)
)
)
如果我将
title
更改为与数据库中的整个字符串匹配,则可以工作。我用mongochef尝试了同样的查询,结果成功了。
还尝试使用以下命令更改
title
值:1。
new MongoDB\BSON\Regex('Palmer - The ArT oF', 'i');
2。直接正则表达式字符串
/.*Palmer \- The ArT oF.*/i
……但还是没有结果。
这是
find()
操作的游标对象:MongoDB\Driver\Cursor Object
(
[cursor] => Array
(
[stamp] => 0
[is_command] =>
[sent] => 1
[done] => 1
[end_of_event] => 1
[in_exhaust] =>
[has_fields] =>
[query] => stdClass Object
(
[$query] => stdClass Object
(
[$or] => Array
(
[0] => stdClass Object
(
[title] => stdClass Object
(
[$regex] => /.*Palmer \- The ArT oF.*/
[$options] => i
)
)
)
)
)
[fields] => stdClass Object
(
)
[read_preference] => Array
(
[mode] => 1
[tags] => Array
(
)
)
[flags] => 0
[skip] => 0
[limit] => 0
[count] => 1
[batch_size] => 0
[ns] => laravel.movie_list
)
[server_id] => 1
)
我用mongo-php-library来做这个手术。
最佳答案
我们应该使用“^hello”而不是“^hello/”。因此,以下方法将起作用:
$filter = ['NAME' => new MongoDB\BSON\Regex('^Hello', 'i')]; // Works
$cursor = $collection->find($filter);
就这样。