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


MongoDB & PHP - How do I exclude results from a date range delimited query?

长时间阅读,第一次提问者...

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

以下是到目前为止我对查询的内容:

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

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

您要

查找的是$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-%24nehttp://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24nin

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

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

$dateRange = $collection->find(array(
    'timeStamp' => array(
        '$gt' => $start,
        '$lt' => $end
    ),
    'userAgent' => array(
        '$not' => new MongoRegex('/^ELB/')
    )
));