通过php驱动程序查询MongoDB没有返回任何结果

时间:2013-02-28 21:55:56

标签: php javascript mongodb

所以我在Web服务器上有一个php脚本,通过JSON对象POST监听mongoDB查询,另一个页面构建并向php服务发送查询。我所有的标准查询,例如: {"field1":"2342342","field2":"234234"}已发送并返回正确的结果。

但是,当我尝试发送包含一系列值的查询时,它什么都不返回。

{"field2":"1234","date" : {$gte : "2013-02-11"},"date" : {$lte : "2013-02-11"}}

我可以进入命令行并致电:

db.collection.find({"field2":"1234","date" : {$gte : "2013-02-11"},"date" : {$lte : "2013-02-11"}} ) 

按预期返回结果。显然有一些事情我不完全理解。

执行搜索的PHP命令:

$c_collection->find(json_decode($request));

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

您正在尝试使用重复的元素名称搜索数据库。执行此搜索时,MongoDb会发出如下错误:

Duplicate element name 'date'.

您需要将范围放在同一个区块内。例如:

{
    'date': {
        $gte:"datehere",
        $lte:"datehere"
    }
}

在PHP中:

$criteria = array('date' => array('$gte' => 'datehere', '$lte' => 'datehere'));

然后使用json作为标准。

另外,为什么在将标准传递到数据库之前解码标准?该方法可以接受一个数组。