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);
しかし、このクエリは結果を返しません。PHP 配列に重複するキーを含めることはできないため、明らかに$and
配列から削除することはできません。
速度が重要なので、JavaScript 式は使用したくありません。
更新: Alexander Azarov がコメントで指摘したように、元のクエリは別の方法で記述できます。適切に使用された $and
クエリで質問を更新しました。