使用 PHP 脚本创建了一个 mongo 集合,其中的子字段使用 MongoDate 初始化。集合中的结果字段如下所示:
"ts_add" : {
"sec" : 1335468966,
"usec" : 420000
},
当我在 PHP 中针对该字段构建查询时,我正在像这样构建它:
$val = new MongoDate(strtotime($strDate)); // $strDate = '2012-04-25'
...
$aryQuery = array(STRING_COL_NAME => array ('$gte' => $val));
然后我做一些其他的事情并使用 find() 命令执行查询。
根据调试器,PHP 中的构建查询结构如下所示:
find(Array
(
[ts_add] => Array
(
[$gte] => MongoDate Object
(
[sec] => 1335337200
[usec] => 0
)
)
)
在我的日志文件中,我看到:
runQuery called coll.table { ts_add: { $gte: new Date(1335337200000) } }
但是从来没有返回任何数据......而且我对所有额外的零有点奇怪,但我认为这是添加了默认时间戳数据或一些奇怪的 MongoDate-ism......
如果我从 cli 手动运行以下命令:
> db.table.find({ "ts_add.sec": { $gte:1335337200 } })
返回完整的数据集(如预期的那样)。
然后,从 cli 尝试模仿 MongoDate 的东西:
> var start = new Date(2012, 3, 10)
> db.addons_add.find({ ts_add : { $gte : start } } )
没有返回数据。
如果我使用相同的输入数据并将其转换为 MongoID,搜索 $_id 字段,则搜索成功。
有什么建议么?我错过了什么?感觉我站在离树三英寸远的地方,抱怨我怎么看不到森林……
谢谢!