Chr*_*n P 5 php mongodb mongodb-php
我使用PHP数组语法遇到了这个MongoDB查询的问题.这是我想要使用的查询的直接版本.
db.collection.find({
$or: [
{$and : [{X:1}, {X: {$gt: 100}}]},
{$and : [{X:2}, {X: {$lt: 100}}]}
]
});
Run Code Online (Sandbox Code Playgroud)
注意:真正的查询更复杂,这只是一个例子.
我无法在PHP中找到一些描述此类查询的示例.我提出的最好的是:
$query = array(
'$or' => array(
array(
'$and' => array(
array('X' => 1),
array('X' => array('gt' => 100))
)
),
array(
'$and' => array(
array('X' => 2),
array('X' => array('lt' => 100))
)
),
)
);
$this->db->collection->find($query);
Run Code Online (Sandbox Code Playgroud)
但是这个查询不会返回任何结果.显然我们无法$and从数组中删除,因为我们不能在PHP数组中有重复的键.
我不想使用JavaScript表达式,因为速度至关重要.
更新:正如Alexander Azarov在评论中指出的那样,我的原始查询可以用不同的方式编写.我已使用正确使用的$and查询更新了问题 .
Sal*_*ali 12
下面是代码的一个示例或与和在PHP运营商用于蒙戈查询.
它使用您在查询中找到的不同字段名称,但了解如何使用它很简单.
现在我没有时间更改它,以匹配您的查询,但如果您遇到问题,请告诉我,我会调整它.此查询正在运行并找到它应该找到的内容.
$arrFind = array(
'$or' => array(
array(
'$and' => array(
array(
UI_name => array(
'$regex' => 'andrew',
'$options' => 'i'
)
),
array(
UI_surname => array(
'$regex' => 'mik',
'$options' => 'i'
)
)
)
),
array(
'$and' => array(
array(
UI_surname => array(
'$regex' => 'andrew',
'$options' => 'i'
)
),
array(
UI_name => array(
'$regex' => 'mik',
'$options' => 'i'
)
)
)
),
)
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15794 次 |
| 最近记录: |