php – 使用日期范围和另一个条件进行MongoDB搜索
发布时间:2020-12-13 17:43:05 所属栏目:PHP教程 来源:网络整理
导读:我正在尝试查询 mongodb以查找具有特定日期范围的’date’属性的文档,这就是我正在做的事情. Q1. $searchCriteria = array('$and' = array( 'date' = array('$gt' = $start,'$lte' = $end),'lid' = $lid )); Q2. $results = $collection-find($searchCriteri
我正在尝试查询
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错误. 解决方法
A1 / A2:你不需要$和那样的,而是使用:
$searchCriteria = array( 'date' => array('$gt' => $start,'lid' => $lid ); 在shell上,这个{“$和”:{“date”:{“$gt”:“2010-11-10”,“$lte”:“2010-11-12”},“lid”:6209} }是不正确的,因为你需要使用一个数组(带[])而不是一个对象(即{}).正确的是: {"$and":[ {"date":{"$gt":"2010-11-10","$lte":"2010-11-12"} },{"lid":6209} ]} 但是你不需要$和你可以使用: db.largedaily.find( {"date":{ "$gt":"2010-11-10",{"lid":6209 } ); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |