53日目TIL


開始します。


今日はNoSQLで広く使われているツールデータベースMongoDBについて学びました.MongoDBをインストールし、クエリーを学習し、実際に使用します.これまで学習したリレーショナル・データベースと比較して、どのような利点があり、どのような場合に使用すればよいのでしょうか.

MongoDB


NoSQL


NoSQLは広く使用されている用語で、リレーショナル・テーブルの従来のメソッドを使用しないデータ・リポジトリを指し、MongoDBは広く使用されているNoSQLデータベースです.
NoSQLを使用する場合
  • 非構造大容量データを格納場合:
  • クラウドコンピューティングとストレージスペース
  • を活用
  • サービスの迅速な導入とデータ構造の頻繁な更新

    Atlas Cloud


    MongoDBはAtlasを使用してクラウド上にデータベースを構築します.AtlasはGUIとCLIを使用してデータを可視化、分析、エクスポート、構築することができ、Atlasユーザーはクラスタを配置し、クラスタはデータをパケットサーバに格納することができる.

    このサーバはReplica setからなり、Replica setは同じデータを格納する関連するいくつかのMongoDBインスタンスの集合である.
  • の例は、特定のソフトウェアを実行するローカルまたはクラウドのスタンドアロンである.この場合、インスタンスはクラウド上で実行されるMongoDBデータベースです.
  • Replicaset:同じデータを格納する少数の接続機器を表し、そのうちの1つに問題が発生しても、データを一定に保つことができます.
  • インスタンス:MongoDBでデータベースとしてローカルまたはクラウド上で特定のソフトウェアを実行するスタンドアロン.
  • クラスタ:データを格納するサーバグループで、複数のコンピュータをネットワークを介して接続し、単一のコンピュータのように動作させるコンピュータを指す.
  • 用語

  • Document:フィールド値対として格納データ
  • フィールド(フィールド):データポイントの一意の識別子
  • 値(Value):与えられた識別子に関連付けられたデータ
  • コレクション:MongoDBのドキュメントからなるリポジトリで、通常はドキュメント間の共通フィールドがあります.各データベースには多くのコレクションがあり、各コレクションには多くのマネージャがあります.
  • JSON vs. BSON


    JSON


    shellを使用してドキュメントを問合せまたは更新する場合、ドキュメントはJSON形式で出力されます.JSON形式でドキュメントを作成するには、次の条件を満たす必要があります.
    カッコ
  • 2{}で開始と終了も行います.
  • フィールドと値は、コロン(:)で区切らなければなりません.フィールドと値を含むペアはカンマ(,)で区切られます.
  • 文字列のフィールドも二重引用符("")で囲まれます.
  • Importmongoimport --uri "<Atlas Cluster URL>" --drop=<filename>.jsonExportmongoexport --uri "<Atlas Cluster URL>" --collection=<collection name> --out=<filename>.json

    BSON


    JSON形式は読みやすく、多くの開発者が使いやすいが、パッケージ速度が遅く、メモリの使用効率が低い.また、基本データ型のみがサポートされているため、利用可能なデータ型は制限されています.
    これらの問題を解決するためにBSON形式を導入した.
    BSONは、コンピュータ言語に類似したバイナリ表現に基づいており、JSONよりもメモリの使用が効率的で、より速く、より軽く、より柔軟であり、より多くのデータ型を使用することができます.
    MongoDBでは、JSON形式で作成されたコンテンツをデータベースに追加でき、クエリーが容易です.しかし、その内部では、BSONはその速度、効率、柔軟性の利点でデータを格納し、使用します.
    Importmongorestore --uri "<Atlas Cluster URL>" --drop dumpExportmongodump --uri "<Atlas Cluster URL>"

    CRUD


    Create

    db.collection.insert([document or array of documents], {ordered: <boolean>})
    複数のデータを挿入する場合は、配列内のオブジェクト形式を入力し、オプションをordered: falseに設定します.
    duplicate keyエラーが発生しても、その後のドキュメントに一意のidがある場合は、すべてセットに挿入します.

    READ


    find()
    db.collection.find(query, projection)
    queryで検索するドキュメントの条件を「フィールド」>「値」と入力すると、対応するドキュメントがクエリーされます.
    2番目のパラメータ投影に{ "필드" : 1 }と書きます.クエリー条件に一致するデータの対応する필드:값のみが表示されます.値が0の場合、クエリー範囲にはフィールドは含まれません.複数のフィールドに同時に適用される場合、1と0は混在しません({ "_id" : 0, "필드" : 1 }など).
    findOne()
    db.collection.findOne()
    findoneを使用して、条件に対応するデータをランダムに取得します.
    count()
    db.collection.find().count()
    find().count()を使用して、クエリーされたデータの数を返します.
    pretty()
    db.collection.find().pretty()
    pretty()は、ドキュメントの構造、各フィールド、および値のペアをより読みやすく出力します.

    UPDATE


    updateOne()
    db.collection.updateOne({"field":"value"}, {"$set" : {"field": "value"}})
    updateOneは、指定された基準に合致するほとんどのエンティティの最初のエンティティのみを更新します.
    1番目のパラメータに更新するデータの条件を入力し、2番目のパラメータに変更するフィールドと値を入力すればよい."$set"ではなく"$inc"を入力すれば、「value」に書いてある数字に従って増加することができる.
    updateMany()
    db.collection.updateMany({"field":"value"}, {"$set" : {"field": "value"}})
    updateManyでは、updateOneと同様に使用されるクエリー文に一致するすべてのドキュメントが更新されます.

    DELETE


    deleteOne()
    db.collection.deleteOne({"field":"value"})
    deleteOneは、指定された基準に合致する複数のエンティティの最初のエンティティのみを削除する最初のパラメータです.
    deleteMany()
    db.collection.deleteMany({"field":"value"})
    deleteManyは、クエリー文に一致するすべてのドキュメントを削除します.
    drop()
    db.collection.drop()
    dropを使用すると、対応するコレクションが削除されます.

    の最後の部分


    MongoDBは非リレーショナルデータベースですが、以前SQLを学んだ後なので、概念や構造をより簡単に把握できます.データベースの概念を理解しているので、ツール、フィールド、集合の概念は用語だけではなく、SQLと一致するところが多く、JSONもjavascriptを学ぶときに知っている概念なので、データの管理やクエリーの文を素早く熟知することができます.ブログは書かれていませんが、MongoDBの使用に慣れるために、追加学習の演算子と集約フレームワークを練習する必要があります.