$match
1. $match ステージの役割
このアグリゲーションステージは、標準的な find メソッドと同様の動作をします。指定されたクエリ(条件)に一致するドキュメントのみをフィルタリングします。
パイプラインの早い段階(なるべく最初の方)で $match を使用することは、パフォーマンス向上のための定石です。これにより、後続のステージが処理しなければならないドキュメントの数が大幅に削減されるためです。
2. 実装例
以下の例では、「アグリゲーション入門」セクションでロードしたサンプルデータセットの中から、sample_airbnb データベースを使用しています。
2.1 コード例:特定の物件タイプでの抽出
db.listingsAndReviews.aggregate([
// ステージ 1: property_type が "House"(一戸建て)のドキュメントのみを抽出
{ $match : { property_type : "House" } },
// ステージ 2: 結果を 2 件に制限
{ $limit: 2 },
// ステージ 3: 必要なフィールド(名前、寝室数、価格)のみを抽出
{ $project: {
"name": 1,
"bedrooms": 1,
"price": 1
}}
])このクエリを実行すると、property_type が "House" であるドキュメントのみが結果として返されます。