0

长期阅读,第一次提问...

使用PHP查询我们的MongoDB页面访问日志,想得到两个时间段之间的一组记录,但排除了具有一定userAgent的结果。我已经弄清楚了时间范围,但找不到任何解释排除的地方。

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

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

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

4

2 回答 2

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

于 2012-05-17T08:23:26.010 回答
1

您可以附加{$not: /^ELB/}到 mongo 查询。

不太确定等效的 PHP,但尝试这样的事情:

$dateRange = $collection->find(array(
    'timeStamp' => array(
        '$gt' => $start,
        '$lt' => $end
    ),
    'userAgent' => array(
        '$not' => new MongoRegex('/^ELB/')
    )
));
于 2012-05-17T00:24:37.257 回答