因此,我在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作为标准。
此外,为什么要在将标准传递到数据库之前对其进行解码?该方法可以很好地接受数组。