长期使用者,第一次提问者......
使用PHP查询我们的MongoDB页面访问日志,我想获得两个时间段之间的一组记录,但排除具有某个userAgent的结果。我已经计算出时间范围,但无法找到解释排除的任何地方。
到目前为止,这是我对查询的内容:
$dateRange = $collection->find(array("timeStamp" => array('$gt' => $start,
'$lt' => $end)));
寻找代码来完成查找功能以使用以“ELB”开头的“userAgent”排除记录
答案 0 :(得分:2)
您要查找的是$ ne或$ nin,具体取决于您要排除的值是单个值还是值数组。例如:
$dateRange = $collection->find(array("timeStamp" => array('$gt' => $start, '$lt' => end), 'userAgent' => array('$ne' => new MongoRegex('/^ELB/'))));
此处的文档:
http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24ne http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24nin
答案 1 :(得分:1)
您可以将{$not: /^ELB/}
附加到mongo查询。
不太确定等效的PHP,但尝试这样的事情:
$dateRange = $collection->find(array(
'timeStamp' => array(
'$gt' => $start,
'$lt' => $end
),
'userAgent' => array(
'$not' => new MongoRegex('/^ELB/')
)
));