7

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

いくつかのドキュメントをまとめて、それらを 1 つのドキュメントとしてラベル付けしたいだけです。次に例を示します。

私は次の書類を持っています: cc_address us_address billing_address shipping_address

しかし、私のアプリケーションでは、すべての住所を表示して、それらを 1 つのドキュメントで管理できるようにしたいと考えています。

また、コレクションからいくつかのフィールドが必要な場合もあります。

次のドキュメントがあります: fb_contact twitter_contact google_contact reddit_contact

これらの各ドキュメントには、名、姓、電子メールなど、整列するフィールドがありますが、整列しないフィールドもあります。整列するフィールドのみを含む単一のドキュメントにそれらをコンパイルできるようにしたいと思います。

これは、SQL のビューによって実現できますか? この種の機能を MongoDb で実現できますか?

4

4 に答える 4

8

The question is quite old already. However, since mongodb v3.2 you can use $lookup in order to join data of different collections together as long as the collections are unsharded. Since mongodb v3.4 you can also create read-only views.

于 2016-11-21T13:40:15.273 に答える
3

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

ただし、Map-Reduce を使用することもできます。

または、開発ブランチを使用する準備ができている場合は、新しい集計フレームワークをテストできますが、多すぎるかもしれません。この新しいフレームワークは、2.1.x とは異なり、すぐにリリースされる2.2に含まれます。

これも SQL- Mongoチャートです。学習に役立つかもしれません。

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

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

于 2012-07-16T16:56:25.273 に答える
1

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

于 2012-07-16T16:34:12.103 に答える
0

現在、開始したプロジェクトの mongodb を評価していますが、mongodb の SQL ビューに相当するものについての情報が見つかりません。

この回答に加えて、mongodb にはオンデマンドのマテリアライズド ビューが追加されました。簡単に言うと、この機能を使用するaggregateと、$merge(4.2 で) and を使用して、より高速にクエリできるクイック ビュー コレクションを作成/更新できます。この戦略は、メイン コレクションのレコードが変更されるたびにクイック ビュー コレクションを更新するために使用されます。これには、SQL とは異なり、データ ストレージ サイズが増加するという副作用があります。ただし、クエリのニーズによっては、メリットが非常に大きくなる可能性があります。

于 2021-05-18T23:17:28.270 に答える