MongoDB

5726 ワード

Achievement Goals
  • NoSQLの長所と特徴を知ることができます.
  • MongoDBのドキュメントとコレクションを知ることができます.
  • JSONとBSONの違いを理解し、プレゼンテーションをインポートまたはエクスポートできます.
  • MongoDBのAtlasがわかります
  • クラスタとReplica setがわかります.
  • Atlasは、グラフィックユーザインタフェースおよびshellクエリ文として使用できます.
  • CRUDは
  • MongoDBで行えます.
  • Insert、Find、Update、Deleteのクエリ文を記述できます.
  • 演算子と投影を使用できます.
  • 配列とサブマップをクエリーできます.
  • 集約フレームワークを使用して、集約コマンドを使用してクエリーできます.
  • $match、$project、$group演算子を使用できます.
  • MongoDB
    表ではなくドキュメント形式の代表的なデータベース
    JSONと同様の形式でデータを記録し、各ドキュメントを集合と呼ばれるグループに整理して管理します.

    NoSQLベースの非リレーショナル・データベースのプロパティ


  • 大量のデータを格納:データ構造がほとんどないか、まったくない.
    ->ソフトウェア開発には大量の非構造化データが必要

  • クラウドコンピューティングとストレージスペースの活用
    ->システム規模の拡大に伴いdbはほぼ無限に横方向に拡張できる

  • 迅速な導入サービス、頻繁なデータ構造の更新
    ->アーキテクチャを事前に準備する必要がなく、迅速な開発に役立ちます.市場でプロトコル・タイプを迅速に導入する必要がある場合は、ソフトウェア・バージョンのダウンタイム(dbserverofflice)を必要とせずに、データ構造を頻繁に更新する必要があります.
  • Atlas Cloud


    MongoDBはAtlasを使用してクラウド上にデータベースを設定します.GUI、Shellにデータを可視化、分析、エクスポート、および構築できます.

    MongoDB Document


    documentがデータをフィールドに格納および整理する方法-オブジェクトなどの値のペア.同じフォームがあります.すべてのドキュメントに一意のid値があります.field-value値が同じ場合、idが異なる場合は、他のドキュメントとみなされます.
    { 
    <field>:<value>
    <field>:<value>
    "name":"Sasha",
    "title":"CodeMaster",
    "Age" : 3
    }
    Document:field-value格納データ
    Field:データの一意の識別子
    Value:指定された識別子に関連するデータ
    Collection:ドキュメントリポジトリ.通常、ドキュメント間に共通のフィールドがあります.データベースには複数のコレクションがあり、コレクションには複数のドキュメントがあります.

    JSON & BSON


    shellを使用してDocumentを問合せまたは更新する場合、JSON形式で出力します.JSON形式は読み書きが容易ですが、テキストなので解析が非常に遅く、メモリの使用効率が低下します.そこでBSON(Binary JSON)形式を導入した.MongoDBでは、JSON形式で作成したコンテンツをデータベースに追加できます.内部はBSON形式で保存され、通常は読みやすいJSON形式で出力されます.

    BSON例
    簡単なバックアップストレージはBSON、クエリーと出力はJSONであることを覚えておいてください.
    - JSON
    mongoimport
    mongoexport --uri "<Atlas Cluster URI>"
      	    --collection=<collection name>
      	    --out= <filename>.json
    - BSON
    mongostore
    mongodump --uri "<Atlas Cluster URI>"
    

    CRUD in MongoDB

  • Create
  • db.collection_name.insert({data1},{data2}...)
    
    ** 여러 개의 데이터를 삽입할 경우 객체를 요소로 갖는 배열을 넣어주자. index 순으로 데이터가 삽입되며, ordered 옵션을 추가하면 삽입 순서를 변경할 수 있음.
    
    ** {"ordered": true} 일 경우, 배열 안의 index 순으로 작업이 수행됨. _id 필드 값이 같을 경우, duplicate error 발생.
    
  • Read
  • db.collection_name.find({query1, query2...})
    // 데이터 중 20개만 무작위로 뽑아서 렌더링 
    db.collection_name.findOne({"_id":ObjectId("")}) // 특정 데이터만 조회.
    
    db.collection_name.find() // 전체 데이터 탐색
    
    .pretty() // 보기 편하게 정렬
    .count() // 데이터 개수 반환 
  • Update
  • db.collection_name.updateMany({query1}, {"$inc":{"<field>":<increment value1>,
    	<field>":<increment value2>, ...}})
    // $inc 연산자를 통해 다수의 필드 값을 동시에 업데이트
    
    db.zips.updateOne({"zip":"12534"},{"$set":{"pop":6235}}) 
    // $set 연산자를 통해 단일 필드 값만 업데이트
    
    db.grades.updateOne({"student_id":250, "class_id":339}, {"$push":{"type":"extra credit", "score":100}}}) 
    // $push 연산자를 통해 배열로 이뤄진 필드 값에 요소를 추가 
    
    ** field 잘못 입력할 경우, MongoDB는 새로운 데이터가 추가되는 줄 알고 업데이트하므로 주의할 것. 
    
  • Delete
  • db.inspections.deleteMany({query})
    db.inspections.deleteOne({query})
    
    db.collection_name.drop() // collection 삭제