BT

MongoDBのGroup By

| 作者: Jonathan Allen フォローする 530 人のフォロワー , 翻訳者 徳武 聡 フォローする 0 人のフォロワー 投稿日 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でリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT