sql >> データベース >  >> NoSQL >> MongoDB

ネストされたSQL選択クエリのように機能するMongoDbでネストされたクエリを作成する方法

    MongoDBでのこのような質問に対する答えは、多くの場合、データを非正規化することです。グループ内のユーザーのリストだけが必要な場合は、ユーザーIDをおよび保存できます。 グループドキュメント内のユーザー名。いくつかの方法では、データベースを正規化された形式にしようとするのではなく、画面に表示したい結果に従ってデータベースを構造化します。

    明らかに、これは(名前付きの)ユーザーグループリストが単一のドキュメントに収まる場合にのみ機能しますが、現在のアプローチには、グループの最大サイズに関してもいくつかの制限があります。

    別のアプローチは、ユーザーが属するグループを各「ユーザー」ドキュメントの配列に格納することです。その配列フィールドにインデックスを追加すると、グループごとにユーザーを見つけることができます。ユーザーがグループ内のメンバーよりも少ないグループに属する可能性が高いことを考えると、これがここでの最善のアプローチである可能性があります。

    db.user.save({_id:"u1", name:"u1 name", groups:[{_id:"g1", name:"Group One"}, ...]});
    

    ここでも、グループ名を_idとともに保存して、ユーザーが属するグループのリストを1回の往復ですぐに表示できるようにすることができます。もちろん、グループ名の変更を許可する場合は、バックグラウンドタスクを開始して、名前のこれらすべてのコピーを修正する必要があります。

    また、独自のMongoDB IDジェネレーターではなく、組み込みのMongoDB IDジェネレーターを使用します。これには、多くの望ましいプロパティがあります。



    1. 配列をループし、ループ内のMongoDBコレクションをチェックします(非同期)

    2. Apache Hadoopオゾンセキュリティ–認証

    3. MongoDBのフィールドを更新するmongooseが機能しない

    4. MongoDBデータベースの名前をどのように変更しますか?