Php 用于范围的MongoDB或运算符
Php 用于范围的MongoDB或运算符,php,mongodb,doctrine-orm,doctrine-odm,Php,Mongodb,Doctrine Orm,Doctrine Odm,这是Im使用的范围: $Range1=array('$or'=>array( array( '$gte' => floatval($O_NLA), '$lte' => $N_NLA ), array( '$gte' => floatval($N_SLA), '$lte' => $O_SLA )) ); $Range2=array('$or'=>array(
这是Im使用的范围:
$Range1=array('$or'=>array(
array( '$gte' => floatval($O_NLA), '$lte' => $N_NLA ),
array( '$gte' => floatval($N_SLA), '$lte' => $O_SLA ))
);
$Range2=array('$or'=>array(
array( '$gte' => floatval($N_SLO), '$lte' => $O_SLO ),
array( '$gte' => floatval($O_NLO), '$lte' => $N_NLO ))
);
我的问题的一部分:
$finder=$reposit->findBy(
array(
'field1' => $Range1,
'field2' => $Range2,
'display'=>1
))->toArray();
“消息”:“localhost:27017:无效的运算符:$或”。。。。。(虽然时间很长)
在没有查询生成器的情况下,如何将$or运算符与条令一起使用
findBy([
'$or' => [
['field1' => ['$gte' => floatval($O_NLA), '$lte' => $N_NLA]],
['field1' => ['$gte' => floatval($N_SLA), '$lte' => $O_SLA]],
['field2' => ['$gte' => floatval($N_SLO), '$lte' => $O_SLO]],
['field2' => ['$gte' => floatval($O_NLO), '$lte' => $N_NLO]]
]
, 'display' => 1
])
或者实际上:
findBy([
'$and' => [
['$or' => [
['field1' => ['$gte' => floatval($O_NLA), '$lte' => $N_NLA]],
['field1' => ['$gte' => floatval($N_SLA), '$lte' => $O_SLA]],
]],
['$or' => [
['field2' => ['$gte' => floatval($N_SLO), '$lte' => $O_SLO]],
['field2' => ['$gte' => floatval($O_NLO), '$lte' => $N_NLO]]
]]
]
, 'display' => 1
])
根据你的问题更准确地说
因为$或
在包含类似find()
的数组的条件下工作