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

MongoDBでのルックアップチャートの紹介

    MongoDBに慣れていない場合は、ドキュメント指向のNoSQLデータモデルであり、リレーショナルテーブルのようにテーブルや行ではなくドキュメントを使用します。

    そのため、MongoDBは独自の方法で構築されているため、優れたスケーラビリティを備えた高性能データベースに最適なデータモデルの1つです。もちろん、それは競争がないという意味ではなく、MongoDBはFirebaseやCassandraと比較されることがよくあります。

    もちろん、問題は、データストアでのクエリリクエストが大きくなると問題が発生する可能性があり、ある程度のクエリの第一人者である必要があるということです。

    ありがたいことに、MongoDBは、コードクエリを排除するだけでなく、数回クリックするだけの簡単な機能を備えたまったく新しい機能を導入しました。つまり、通常と同じタイプのクエリや参加を行うために、多くの時間や手間をかける必要がないということです。

    MongoDBでの従来のクエリ

    ドキュメント指向データベースはすでに非常に柔軟ですが、複数のコレクションのライブデータが必要になる場合があります。たとえば、1つのコレクションにユーザーデータを含めることができ、別のコレクションにユーザーアクティビティを含めることができます。これを拡張して、さまざまなアプリケーションやWebサイトなどのデータのコレクションをいくつか含めることもできます。

    これが、MongoDBクエリ言語(MQL)が誕生した理由であり、プログラマーが複雑なクエリを作成する方法を提供しました。実際、MongoDBには、クエリドキュメントとその実行方法に関するページ全体があります。慣れていない場合は、次の手順で機能を確認できるため、後で新しいルックアップチャートと比較できます。

    まず、URIをMongoシェルに渡し、次に--password

    を使用して、MongoDBインスタンスに接続する必要があります。
    mongo.exe mongodb://$[hostlist]/$[database]?authSource=$[authSource] --username $[username]

    次に、データベースに切り替えます。この場合は、架空の「テスト」データベースを使用します

    use test

    この時点で、必要に応じてさらに多くのデータをMongoDBにロードします。これは、insertMany()メソッドを使用して実行できます。

    db.inventory.insertMany( [
    
       { "item": "journal", "qty": 25, "size": { "h": 14, "w": 21, "uom": "cm" }, "status": "A" },
    
        { "item": "notebook", "qty": 50, "size": { "h": 8.5, "w": 11, "uom": "in" }, "status": "A" },
    
        { "item": "paper", "qty": 100, "size": { "h": 8.5, "w": 11, "uom": "in" }, "status": "D" },
    
        { "item": "planner", "qty": 75, "size": { "h": 22.85, "w": 30, "uom": "cm" }, "status": "D" },
    
        { "item": "postcard", "qty": 45, "size": { "h": 10, "w": 15.25, "uom": "cm" }, "status": "A" }
    
    ]);

    次に、特定のコレクション内のドキュメントを取得することで実際のクエリを実行します。

    myCursor = db.inventory.find( { status: "D" } )

    通常、これは20のドキュメントを表示し、カーソルを返しますが、必要に応じて。ただし、結果セットが大きい場合は、結果を繰り返し処理する必要があります。

    while (myCursor.hasNext()) {
    
    print(tojson(myCursor.next()));
    
    }

    最後に、結果をチェックして、すべてが正しいことを確認します。以下の例では、ObjectIDの値が異なることに注意してください。

    {
    
     item: "paper",
    
     qty: 100,
    
     size: {
    
       h: 8.5,
    
       w: 11,
    
       uom: "in"
    
       },
    
     status: "D"
    
    },
    
    {
    
     item: "planner",
    
     qty: 75,
    
     size: {
    
       h: 22.85,
    
       w: 30,
    
       uom: "cm"
    
       },
    
     status: "D"
    
    }
    
    
    ルックアップチャートの利点

    ご覧のとおり、プロセスは多くのステップで非常に複雑であるため、MongoDBがプロセスをもう少し合理化したいと考えたことは理にかなっています。もちろん、それは単に物事を簡単にするだけではなく、ルックアップチャートには多くの利点があります。

    たとえば、複数のコレクションを結合することで、シングルビュー形式でより良い洞察を収集できます。さらに重要なことは、仕様に従ってライブで更新された視覚的で解析しやすいチャートを持つことは非常に貴重です。これにより、特に情報をさらにカテゴリに分類する場合は、目視検査からほぼ即座に情報を引き出すことができます。

    最後に、最大の利点は、1つのデータベースについてのみMQLを学習して習得する必要がないことです。これにより、多くのプログラマーの参入障壁が軽減されます。

    ルックアップチャートの使用方法

    さて、MongoDBでクエリが通常どのように機能するかを見てきました。ルックアップチャートがより重要な情報をより迅速に取得するのにどのように役立つかについては良い考えがありますが、実際にはどのように機能しますか?

    まあ、手順は比較的簡単です:

    1. まず、左上のドロップダウンメニューでデータソースを選択して選択する必要があります。
    2. 次に、‘をクリックします。 。コレクション間のフィールドの。」をクリックし、[ルックアップフィールド]をクリックします
    3. 新しいウィンドウが表示されたら、データを取得する場所である「リモートデータソース」を選択します。
    4. 次に、[リモートフィールド]を選択する必要があります。これは、2つのデータソース間で共通のフィールドになります。
    5. 最後に、結果フィールドの特定の名前を保存できます。保存しない場合は、[保存]をクリックするだけです

    これでほぼ完了です!これで、新しいフィールドからチャートビルダーにドラッグアンドドロップできます。配列削減方法も選択することを忘れないでください。そうしないと、グラフが表示されない場合があります。

    MongoDBチャートをよく理解する

    もちろん、この時点で、新しいルックアップ機能はMongoDBチャートの一部であり、MongoDB自体には、ソフトウェアを理解するのに役立つ興味深い記事がいくつかあります。

      グラフをカスタマイズする新しい方法 注文データの視覚化
    1. ルックアップフィールドの追加(ルックアップチャートとは異なります)
    結論

    ご覧のとおり、新しいLookUp Chartsは、MongoDBクエリの技術的知識を大幅に削減する非常に強力なツールです。いくつかの簡単な手順で、いくつかのコレクションから結合された情報のグラフを確認し、新しい情報をほぼ即座に理解できます。

    それを、コーディングのいくつかのステップとそのコードを理解する必要があった古い方法と比較すると、この新しいリリースがどれほど素晴らしいかがわかります。


    1. redis.confのmaxmemoryパラメータ

    2. Mongooseスキーマで配列サイズの制限を設定する方法

    3. useMongoClient(Mongoose 4.11.0)を設定するにはどうすればよいですか?

    4. リクエストごとにエクスプレス変更セッション