通过php驱动程序进行的MongoDB查询没有返回任何resutl


MongoDB query through php driver returns no resutls

因此,我在web服务器上有一个php脚本,通过另一个页面构建的JSON对象POST侦听mongoDB查询,并将查询发送到php服务。我的所有标准查询,例如:CCD_ 1被发送并返回正确的结果。

但是,当我尝试发送一个包含一系列值的查询时,它不会返回任何结果。

{"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));

任何帮助都将不胜感激。

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

Duplicate element name 'date'.

你需要把你的范围放在同一个区块内。例如:

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

在PHP中:

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

然后使用json作为标准。

此外,为什么要在将标准传递到数据库之前对其进行解码?该方法可以很好地接受数组。