2014-04-20 16 views
0

我有一個數據庫,我存儲DNS日誌。數據存儲在集合dnslog中。這是文件結構:在MongoDB中使用PHP搜索沒有結果?

{ 
    "_id" : ObjectId("53539df1e4b076aa8975840a"), 
    "dateandtime" : ISODate("2014-04-09T03:42:48Z"), 
    "client" : "222.29.72.224", 
    "query" : "www.google.com", 
    "other" : "AAAA" 
} 

我把近一週的日誌存入數據庫,總數爲821943936; 我有以下的PHP腳本搜索結果:

$m = new MongoClient(); 
echo "Connection to database successfully"."<br />"; 
$db = $m->dns; 
echo "Datebase dns selected"."<br />"; 
$collection = $db->dnslog; 
echo "Collection selected succsessfully"."<br />"; 
$startdate = new MongoDate("2014-04-09 11:42:00"); 
$enddate = new MongoDate("2014-04-09 11:43:00"); 
$result = $collection->find(array("dateandtime"=>array('$gte'=>$startdate,'$lte'=>$enddate))); 
echo $result->count(); 
foreach($result as $doc){ 
     echo $doc['client']."<br />"; 
} 

的腳本不返回任何結果。這是腳本的輸出。

Connection to database successfully 
Datebase dns selected 
Collection selected succsessfully 

我敢肯定,在我有指定查詢的文檔,因爲我可以看到該文件,當我使用:

db.dnslog.find(); 
+1

注意:哪裏的錯誤處理? '成功'大聲笑。 –

回答

0

您的查詢是錯誤的。 MongoDate期待UNIX時間戳作爲構造函數中的參數:

$startdate = new MongoDate(strtotime("2014-04-09 11:42:00")); 
$enddate = new MongoDate(strtotime("2014-04-09 11:43:00")); 
+0

我不覺得這個參數有問題,謝謝 – laiqn2012

+0

@ laiqn2012我猜PHP manuall是錯誤的那麼;) –

+0

我發現,當集合中的記錄高達1億時,沒有結果返回$ result = $ collection-> find(),但記錄大約是300萬,它仍然可以返回結果 – laiqn2012