我有一个存储DNS日志的数据库。数据存储在集合dnslog
中。这是文档结构:
{
"_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();
答案 0 :(得分:0)
您的查询错误。 MongoDate期望UNIX时间戳作为构造函数中的参数:
$startdate = new MongoDate(strtotime("2014-04-09 11:42:00"));
$enddate = new MongoDate(strtotime("2014-04-09 11:43:00"));