我正在尝试在 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
);
这也有效,返回所有盖子等于我要求的。
但是当我想将这些与条件相结合时,它不起作用,这是搜索条件 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}}
在 mongo shell 中运行查询的 json 输出会导致错误
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 不正确。