2016-07-25 111 views
0

我想從日期的Mongo集合中檢索數據,我想獲取日期大於或等於當前日期(即數據字段下的日期)的數據。然而,我似乎無法理解爲什麼我的查詢返回什麼(空mongo對象)。下面是我的代碼:MongoDB與PHP的ISODate查詢

陣列結構/內容:

{ 
"_id" : ObjectId("990093409187049704809d"), 
"type" : "number 1 champion", 
"entryDate" : ISODate("2016-05-12T10:55:55.000+0000"), 
"requester" : { 
    "cn" : "Torgue", 
    "username" : "tg" 
}, 
"data" : { 
    "office" : "Badass Crater of Badassitude", 
    "name" : { 
     "firstname" : "Salvador", 
     "middlename" : "A", 
     "surname" : "Gunzerker" 
    }, 
    "date" : ISODate("2016-05-23T23:00:00.000+0000"), 
}, 
"index" : "1" 
} 

PHP查詢:

$today = date(DATE_ISO8601, (new MongoDate())->sec); 
$str = $col1->find(array('type' => 'number 1 champion', 'data.date'=>array ('gte'=>$today))); 
print_r($str); 

請任何人都可以點我在正確的方向還是向我解釋什麼,以便做得到正確的輸出。

對於任何人誰具有同樣的問題,以下是解決方案:

$query = array('type' => 'number 1 champion', 'data.date'=>array ('$gte'=>new mongoDate())); 
$str = $col1->find($query); 

然後循環查看結果:

echo '<pre>'; 
foreach($str as $doc){ 
    print_r($doc); 
} 

回答

1

你必須使用MongoDate對象查詢。

對於您可以使用new MongoDate()這使得如果你想通過您可以使用的strtotime到字符串轉換爲Date類型

$stringtime = "2016-04-09 00:00:00" 

$inputdate = strtotime($stringtime) 

,最後一些自定義的日期MongoDate當前日期

初始化當前日期將它傳遞給MongoDate構造器以獲取相關對象。

new MongoDate($inputdate) 

參考PHP Docs

+0

想你的代碼,仍然沒有工作:( –

+1

@JustIce看起來你現在有解決方案,它看起來像這個問題是一樣的。 新MongoDate()將給當前日期對象 新的MongoDate(strtotime($ inputDate)),並且可以使用一些$ inputDate,它可以是一個帶日期格式的字符串。 我已經更新了我的答案以獲得更清晰的視圖 – Harshil