BT

Ready for InfoQ 3.0? Try the new design and let us know what you think!

MongoDBのGroup By

| 作者: Jonathan Allen フォローする 655 人のフォロワー , 翻訳者 徳武 聡 フォローする 1 人のフォロワー 投稿日 2012年2月22日. 推定読書時間: 1 分 |

原文(投稿日:2012/02/17)へのリンク

馴染みのあるデータアクセス方法を求める声に答えて、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のグループ化処理により近い。結果セットはフラットな行ではなくネストした構造体だ。従って、カウントや平均などの集約された情報が実際にグループ化されたドキュメントとともに得られる。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション
BT