MongoDB PHP 中的“$or”和正则表达式
MongoDB '$or' and regex in PHP
我知道有很多关于 "MongoDB $or 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。为什么?结果不应该是2行吗?
现在,如果我这样做:
$Mongo->Compagnies->find(
array(
'$or' => array(
array(
"Name" => $regex,
"Service" => $regex
)
)
)
);
结果将只是第一行。不明白为什么第二行和query不匹配,因为Name中也有'B'。似乎“$or”运算符的行为类似于“$and”。
我错过了什么吗?我如何 select 在 3 个字段之一中包含字母 'B' 的所有实体,即使一个或多个其他字段不包含该字母?
谢谢:)
每个或条件应该在不同的数组中。
试试这个:
$Mongo->Compagnies->find(
array(
'$or' => array(
array(
"Name" => $regex,
),
array(
"Service" => $regex,
),
array(
"Description" => $regex,
),
)
)
);
我知道有很多关于 "MongoDB $or 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。为什么?结果不应该是2行吗? 现在,如果我这样做:
$Mongo->Compagnies->find(
array(
'$or' => array(
array(
"Name" => $regex,
"Service" => $regex
)
)
)
);
结果将只是第一行。不明白为什么第二行和query不匹配,因为Name中也有'B'。似乎“$or”运算符的行为类似于“$and”。
我错过了什么吗?我如何 select 在 3 个字段之一中包含字母 'B' 的所有实体,即使一个或多个其他字段不包含该字母?
谢谢:)
每个或条件应该在不同的数组中。 试试这个:
$Mongo->Compagnies->find(
array(
'$or' => array(
array(
"Name" => $regex,
),
array(
"Service" => $regex,
),
array(
"Description" => $regex,
),
)
)
);