我知道有很多关于"MongoDB $或PHP"的主题,但我无法理解这一点;
假设我有一个集合Compagnies
:
$Mongo->Compagnies->insert({"Name":"BoldLine", "Service":"Billing", "Description":"Hello World"});
$Mongo->Compagnies->insert({"Name":"Behobe", "Service":"Development", "Description":"Here we are cool"});
我需要在这个集合上执行一个'or'查询,使用正则表达式。所以我做了:
use MongoRegex as MR;
$regex = new MR ("/B/i"); //Where field contains the letter 'B'
$Mongo->Compagnies->find(
array(
'$or' => array(
array(
"Name" => $regex,
"Service" => $regex,
"Description" => $regex
)
)
)
);
但是结果是0。为什么?结果不应该是这两条线吗?现在如果我这样做:
$Mongo->Compagnies->find(
array(
'$or' => array(
array(
"Name" => $regex,
"Service" => $regex
)
)
)
);
结果将只是第一行。我不明白为什么第二行不匹配查询,因为名称中也有'B'。看起来'$or'操作符的作用类似于'$and'。
我错过什么了吗?我如何在3个字段之一中选择包含字母"B"的所有实体,即使一个或多个其他字段不包含此字母?
谢谢你
每个条件应该在不同的数组中。试试这个:
$Mongo->Compagnies->find(
array(
'$or' => array(
array(
"Name" => $regex,
),
array(
"Service" => $regex,
),
array(
"Description" => $regex,
),
)
)
);