Docs Menu
Docs Home
/
MongoDBマニュアル
/ / /

$match(集計)

項目一覧

  • 定義
  • 互換性
  • 構文
  • 動作
  • パイプラインの最適化
  • クエリ述語の式
  • 0 、NULL、false、または欠損値
  • 制限事項
  • Atlas Search を使用した Atlas のデータのフィルタリング
  • 等価一致
  • カウントの実行
  • 詳細情報
$match

指定されたクエリ述語に基づいてドキュメントをフィルタリングします。 一致したドキュメントは、次のパイプライン ステージに渡されます。

次の環境でホストされる配置には $match を使用できます。

  • MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです

  • MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン

  • MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン

{ $match: { <query predicate> } }

クエリ述語の構文は、$match コマンドの クエリ find()引数で使用される構文と同じです。

クエリ述語にを含めるには、 $expr演算子を使用します。

次のいずれかの条件に当てはまる場合、 $matchステージはパイプラインの結果からドキュメントをフィルタリングで除外します。

  • $matchクエリ述語は、そのドキュメントの0null 、またはfalseの値を返します。

  • $matchクエリ述語は、そのドキュメントには欠落しているフィールドを使用します 。

  • $matchステージでは$whereは使用できません。

  • $matchステージでは$nearまたは$nearSphereは使用できません。 あるいは、次のいずれかを実行できます。

  • $text$matchステージで を使用するには、$match ステージがパイプラインの最初のステージである必要があります。

    ビュー$textをサポートしていません。

    注意

    $text は、自己管理型(Atlas 以外)配置に対するテキスト クエリ機能を提供します。MongoDB Atlas でホストされているデータに対して、MongoDB は改良された全文クエリ ソリューションである Atlas Search を提供します。

MongoDB Atlasに保存されているデータでは、 Atlas Search複合演算子filterオプションを使用して、 $searchクエリを実行中にドキュメントを一致またはフィルタリングできます。 } $match$searchの後に実行する方法は、$search 複合 演算子 オプションを使用して を実行する方法よりパフォーマンスが低くなります。filter

filterオプションの詳細については、Atlas ドキュメントの複合を参照してください。

例では、次のドキュメントを含む articles という名前のコレクションを使用します。

{ "_id" : ObjectId("512bc95fe835e68f199c8686"), "author" : "dave", "score" : 80, "views" : 100 }
{ "_id" : ObjectId("512bc962e835e68f199c8687"), "author" : "dave", "score" : 85, "views" : 521 }
{ "_id" : ObjectId("55f5a192d4bede9ac365b257"), "author" : "ahn", "score" : 60, "views" : 1000 }
{ "_id" : ObjectId("55f5a192d4bede9ac365b258"), "author" : "li", "score" : 55, "views" : 5000 }
{ "_id" : ObjectId("55f5a1d3d4bede9ac365b259"), "author" : "annT", "score" : 60, "views" : 50 }
{ "_id" : ObjectId("55f5a1d3d4bede9ac365b25a"), "author" : "li", "score" : 94, "views" : 999 }
{ "_id" : ObjectId("55f5a1d3d4bede9ac365b25b"), "author" : "ty", "score" : 95, "views" : 1000 }

次の操作では、 $matchを使用して等価一致を実行します。

db.articles.aggregate(
[ { $match : { author : "dave" } } ]
);

$matchは、 authorフィールドがdaveと等しいドキュメントを選択し、集計は次の結果を返します。

{ "_id" : ObjectId("512bc95fe835e68f199c8686"), "author" : "dave", "score" : 80, "views" : 100 }
{ "_id" : ObjectId("512bc962e835e68f199c8687"), "author" : "dave", "score" : 85, "views" : 521 }

次の例では、 $matchパイプライン演算子を使用して処理するドキュメントを選択し、その結果を$groupパイプライン演算子にパイプしてドキュメントの数を計算します。

db.articles.aggregate( [
{ $match: { $or: [ { score: { $gt: 70, $lt: 90 } }, { views: { $gte: 1000 } } ] } },
{ $group: { _id: null, count: { $sum: 1 } } }
] );

集計パイプラインで、$match は、score70 より大きく 90 より小さいか、views1000以上のドキュメントを選択します。これらのドキュメントは、カウントを実行するために$groupにつなげられます。集計により次の結果が返されます。

{ "_id" : null, "count" : 5 }

集計に関する詳細とユースケースについては、以下のページを参照してください。

戻る

$lookup