特定の日付範囲にある「date」属性を持つドキュメントをmongodbに照会しようとしています。これが、私が行っている方法です。
Q1。
$searchCriteria = array('$and' =>
array(
'date' => array('$gt' => $start, '$lte' => $end),
'lid' => $lid
));
Q2。
$results = $collection->find($searchCriteria);
何も返されませんが、各検索条件を個別に実行すると機能します。
Q3。
$searchCriteria = array(
'date' => array('$gt' => $start, '$lte' => $end)
);
これは機能し、この日付範囲に一致するドキュメントを返します
$searchCriteria = array(
'lid' => $lid
);
これも機能し、私が要求したものと等しいすべての蓋を返します。
しかし、これらを条件にANDしたい場合、それは機能しません。これが検索条件Q1のvar_dumpです。
array(1) { '$and' => array(2) { 'date' => array(2) { '$gt' => string(10) "2010-11-10" '$lte' => string(10) "2010-11-12" } 'lid' => int(6209) } }
同じクエリのjson_encoded出力は次のとおりです。
{"$and":{"date":{"$gt":"2010-11-10","$lte":"2010-11-12"},"lid":6209}}
クエリのjson出力をmongoシェルで実行すると、エラーが発生します
db.largedaily.find({"$and":{"date":{"$gt":"2010-01-01","$lte":"2010-01-02"},"lid":6209}});
error: { "$err" : "$and expression must be a nonempty array", "code" : 14816 }
私は何が間違っているのですか?searchCriteriaを間違って設定していると思います。