MongoDB& PHP - 如何从日期范围分隔查询中排除结果?

时间:2012-05-16 23:48:18

标签: php mongodb find

长期使用者,第一次提问者......

使用PHP查询我们的MongoDB页面访问日志,我想获得两个时间段之间的一组记录,但排除具有某个userAgent的结果。我已经计算出时间范围,但无法找到解释排除的任何地方。

到目前为止,这是我对查询的内容:

$dateRange = $collection->find(array("timeStamp" => array('$gt' => $start, 
                                                          '$lt' => $end)));

寻找代码来完成查找功能以使用以“ELB”开头的“userAgent”排除记录

2 个答案:

答案 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/')
    )
));