0

因此,我在 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));

任何帮助将非常感激。

4

1 回答 1

1

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

Duplicate element name 'date'.

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

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

在 PHP 中:

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

然后使用该 json 作为您的标准。

另外,为什么要在将标准传递给数据库之前对其进行解码?该方法可以接受一个数组就好了。

于 2013-02-28T22:05:41.147 回答