馴染みのあるデータアクセス方法を求める声に答えて、MongoDBがAggregation Frameworkを導入しようとしている。このライブラリは宣言的なパイプライン記法でSQLのようなgroup by処理を記述できる。JavaScriptでカスタムの処理を書く必要がなくなるのだ。
このフレームワークでは“aggregate”節の後に、ほとんどの場合、“$match”節でパイプライン処理を始める。これらの処理はSQLのfromやwhere節、あるいはMongoDBのfind関数のように働く。次に来るのは“$project”節で、これもSQLやMongoDBにとても似ている(ただし、SQLとは違いこの節は式の最後になければならない)。
次の処理はMongoDBのAggregation Frameworkに特有だ。多くのリレーショナルデータベースとは違い、MongoDBは配列を行/ドキュメントにそのまま保存できる。これは単純なアクセスでは便利だが、射影やグループ化、フィルタリングが必要なレポートを作成する場合はとても複雑になる。“$unwind”節は配列を単一の要素毎に、ドキュメントの残りの部分とともに返してくれる。
“$group”処理はSQLのGroup Byと同じだ。しかし、LINQのグループ化処理により近い。結果セットはフラットな行ではなくネストした構造体だ。従って、カウントや平均などの集約された情報が実際にグループ化されたドキュメントとともに得られる。