所以我在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));
非常感谢任何帮助。
答案 0 :(得分:1)
您正在尝试使用重复的元素名称搜索数据库。执行此搜索时,MongoDb会发出如下错误:
Duplicate element name 'date'.
您需要将范围放在同一个区块内。例如:
{
'date': {
$gte:"datehere",
$lte:"datehere"
}
}
在PHP中:
$criteria = array('date' => array('$gte' => 'datehere', '$lte' => 'datehere'));
然后使用json作为标准。
另外,为什么在将标准传递到数据库之前解码标准?该方法可以接受一个数组。