我在使用 PHP 数组语法的这个 MongoDB 查询时遇到问题。这是我要使用的查询的直接版本。
db.collection.find({
$or: [
{$and : [{X:1}, {X: {$gt: 100}}]},
{$and : [{X:2}, {X: {$lt: 100}}]}
]
});
注意:真正的查询比较复杂,这只是一个例子。
我无法在 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);
但是这个查询不返回任何结果。显然我们不能$and
从数组中删除,因为我们不能在 PHP 数组中有重复的键。
我不想使用 JavaScript 表达式,因为速度很关键。
更新:正如 Alexander Azarov 在评论中指出的那样,我的原始查询可以用不同的方式编写。我已使用正确使用的 $and
查询更新了问题。