我有一个存储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();
发布于 2014-04-20 15:59:01
您的查询错误。MongoDate要求将UNIX时间戳作为构造函数中的参数:
$startdate = new MongoDate(strtotime("2014-04-09 11:42:00"));
$enddate = new MongoDate(strtotime("2014-04-09 11:43:00"));
https://stackoverflow.com/questions/23178053
复制相似问题