我试图在mongodb中查询具有某个日期范围内的' date‘属性的文档,这就是我要做的。
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不正确。
发布于 2012-11-13 06:07:17
A1/A2:您不需要这样的$and,而是使用:
$searchCriteria = array(
'date' => array('$gt' => $start, '$lte' => $end),
'lid' => $lid
);在shell中,这个{"$and":{"date":{"$gt":"2010-11-10","$lte":"2010-11-12"},"lid":6209}}是不正确的,因为您需要使用一个数组(带[]),而不是一个对象( {})。正确的答案是:
{"$and":[ {"date":{"$gt":"2010-11-10","$lte":"2010-11-12"} }, {"lid":6209} ]}但是你不需要$and,你可以直接使用:
db.largedaily.find( {"date":{ "$gt":"2010-11-10","$lte":"2010-11-12"}, {"lid":6209 } );https://stackoverflow.com/questions/13352302
复制相似问题