2012-07-16 18 views
6

私は現在開始しているプロジェクトのmongodbを評価中ですが、mongodbのSQLビューに相当するものについては何の情報も見つけられません。 SQLビューが提供する必要があるのは、異なるテーブル(コレクション)のデータをまとめて1つのコレクションにまとめることです。SQL view in mongodb

私は、いくつかのドキュメントを一括してまとめ、それらを単一のドキュメントとしてラベル付けするだけです。 cc_address us_address billing_address shipping_addressは

しかし、私のアプリケーションでは、私は私のすべてのアドレスを参照し、単一でそれらを管理できるようにしたいと思います:私は、次の書類を持って

:ここでは例です資料。他の例で

、私はただのコレクションからフィールドのカップルをしたいことがあります。

私は、次の書類を持っている: fb_contact twitter_contact google_contact reddit_contact

これらの文書のそれぞれが揃えフィールドを持っています、ファーストネームラストネームとEメールのようなものですが、アライメントされていないフィールドもあります。私は整列するフィールドだけを含む単一のドキュメントにそれらをコンパイルできるようにしたいと思います。

これは、SQLでのビューで正しく行うことができますか?この種の機能をMongoDbで実現できますか?

答えて

1

MongoDBクエリは、結合をサポートしないため、1つ以上のコレクションにまたがることはありません。したがって、クエリの結果に必要な関連データがある場合は、関連するデータをクエリしているコレクションに追加する(つまり、データを非正規化する)か、別のコレクションから別のクエリを作成する必要があります。

+1

DBRefはどうですか? – netcoder

+1

DBRefsは、外部の '_id'を一つのコレクションに格納する形式化された方法で、別のクエリでそれを検索することができます。 – JohnnyHK

3

MongoDBには「結合」はありません。 JonnyHKによると、データを正規化するか、埋め込みドキュメントを使用するか、複数のクエリを実行することができます

ただし、Map-Reduceも使用できます。

または開発ブランチを使用する準備ができていれば、新しいaggregation frameworkをテストすることはできますが、多すぎるかもしれません。この新しいフレームワークは、すぐにリリースされる2.2にあります。これは2.1.xとは異なり、プロダクション対応のものです。

こちらもSQL-Mongo chartです。これは学習に役立つかもしれません。

更新:あなたの再編集に基づいて、クエリーするだけなのでMap-ReduceやAggregation Frameworkは必要ありません。

あなたは本質的に結合を行い、複数のドキュメントをクエリし、結果をマージしています。これを行う場所は、クライアント側のアプリケーション内です。

+0

多分私はここで自分の問題を混乱させるでしょう。私はその結合がMongoDbにはないが、私が考えているユースケースは必ずしも結合を必要としない(私は思う)。私は私の質問を私が望むものの例で更新しました。 – KenEucker

6

質問は既にかなり古いです。しかし、mongodb v3.2以降では、コレクションが非共有である限り、異なるコレクションのデータを結合するために$lookupを使用することができます。 mongodb v3.4以降、create read-only viewsも可能です。

+0

更新いただきありがとうございます! – KenEucker