4

私はmongoDBにフィールドを持っています.ISODateのbirth_dateようなフォーマットです

ISODate("2013-08-15T23:00:00Z")

PHPでは、日付を文字列形式で取得しています

"2013-08-10"

birth_dateより大きいすべてのデータが必要です2013-08-10

このために私はコードを持っています

$inputDate = "2013-08-10";
$dateFilter = array("\$gte",$inputDate); //works well when birth_date field is normat date string like "2013-08-16" but doesn't work with ISODate format as above
$dateRangeQuery = array("birth_date" => $dateFilter);

{"birth_date":{"$gte":"2013-08-10"}}データを正しくフィルタリングしていないクエリを生成します。

次のコード スニペットも機能しませんでした

$dateFilter = array("\$gte",date("c", $inputDate)); 

クエリを生成します

{"birth_date":{"$gte":"2013-08-10T00:00:00+05:30"}}

それからこれもうまくいきませんでした

$dateFilter = new MongoDate($inputDate)

クエリを生成する

{"birth_date":{"$gte":{"sec":2013,"usec":0}}}

提案してください :)

4

2 に答える 2

11

正しい方法は、次のように使用することでしstrtotime

$dateFilter = new MongoDate(strtotime($inputDate))

PHPマニュアルのMongoDateクラスのように

于 2013-09-26T11:44:06.857 に答える
1

作成する別の解決策があります。オブジェクトを作成しmongoDate、オブジェクトを使用してタイムスタンプを取得してから、オブジェクトを作成しますDateTimeDateTimeMongoDatetimestamp

$time = new DateTime('2013-08-10');
$mongoDate = new MongoDate($currentDateWithTime->getTimestamp());
于 2014-04-14T19:00:11.003 に答える