0

長年の閲覧者、初めての質問者..。

PHPを使用してMongoDBページの訪問ログをクエリし、2つの期間のレコードのセットを取得したいのですが、特定の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 に答える