MongoDateで初期化されたサブフィールドを持つPHPスクリプトを使用してmongoコレクションを作成しました。コレクションの結果のフィールドは次のようになります。
"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フィールドを検索すると、検索は成功します。
助言がありますか?私は何が欠けていますか?木から3インチのところに立っていると、森が見えないことについて不平を言っているような気がします...
ありがとう!