モンゴルDB

7092 ワード

NoSQl

  • は、データ構造
  • のほとんどまたはまったくない大量のデータを格納する.
  • クラウドコンピューティングとストレージスペース
  • を活用
  • サービスの迅速な導入とデータ構造の頻繁な更新

    ATLAS


    アトラスを使います.
    アトラスの構造は以下の通りです.
    インスタンス->レジストリ->単一クラスタ->クラスタ

  • 例:モンゴルDBにデータベースを作成します.ローカルまたはクラウド上で特定のソフトウェアを実行するスタンドアロン

  • replicaset:各インスタンスのコピー.

  • ≪クラスタ|Cluster|ldap≫:データを格納するサーバー・グループ
  • MongoDb Document


    注意:
    mongoDB Doc.
    まずMongoDBはBSON形式でデータを格納する.
    {
       field1: value1,
       field2: value2,
       field3: value3,
       ...
       fieldN: valueN
    }
    valueは、BSONに対応するすべてのdata tpeeを含むことができる.(以下に示す)
    var mydoc = {
                   _id: ObjectId("5099803df3f4948bd2f98391"),
                   name: { first: "Alan", last: "Turing" },
                   birth: new Date('Jun 23, 1912'),
                   death: new Date('Jun 07, 1954'),
                   contribs: [ "Turing machine", "Turing test", "Turingery" ],
                   views : NumberLong(1250000)
                }
    BSONが何なのかわからない
    ただし、JSONよりも高速でメモリ使用効率が高く、JSONに対応しない各種データ型を格納することができます.△コンピューター言語に近い.

    Importing & Exporting


    このコマンドを端末で使用する場合は、Database-Tools-on-macOSをインストールする必要があります.
    分類JSONSONBSONImport mongoimportmongoexport Export mongorestoremongodump

    CRUD


    Collection Methods

    CREATE

  • db.컬렉션이름.insert()
  • コレクションにプロンプトを追加するコマンド._idの値はほぼ増加した.
    パラメータをinsertに配置する場合は、bulk insertを使用します.

    に注意


    存在しないコレクションに挿入すると、新しいセットが作成され、展開されます.
  • db.컬렉션이름.find()
  • 探します.

    READ

  • db.컬렉션이름.find(query, options)
  • 条件をqueryに書きます.key:value形で対象に入れればいいようです.(演算子を使用して多様なコンテンツを記述できるように見えます.)cursor.pretty()、客体形態できれいに見えます.ちなみにcursorはfindメソッドを実行して得られた結果の集合である.
  • db.컬렉션이름.find().count()
  • db.컬렉션이름.findOne()
  • 出力は1つのみ

    UPDATE

  • db.컬렉션이름.updateOne()
  • 複数の指定された条件のエンティティの最初のエンティティを更新します.
  • db.collection.updateMany(filter, update, options
  • 適用可能なすべてのドキュメントの更新

    $inc演算子を使用して更新


    △本当にいろいろな演算子があります.
    db.zips.updateMany({"city":"ALPINE"},{"$inc":{"pop":10}})

    に注意


    どちらも存在しないフィールドに値を追加する場合は、フィールドを作成して追加します.
  • push
  • db.grades.updateOne(
    	{"student_id" : 250, "class_id" : 339},
    	{"$push":{"scores":{"type" : "extra credit", "score":100}}}
    )
    Jspushのように配列にデータを入れます.

    DELETE

  • db.컬렉션이름.deleteOne()
  • 一致するアイテムを1つだけ削除db.컬렉션이름.deleteMany()すべての一致を削除db.컬렉션이름.drop()コレクション自体を削除

    演算子


    比較演算子



    論理演算子



    ひょうじえんざんし

    { $expr : { expression } } {"$expr":{"$eq":["$start station id","$end station id"]}}こう書いてあるそうです
    特に、上記のフィールド値の前の$は、そのフィールドの値を表す.

    配列演算子


    ドキュメントに配列が存在するとします.配列に特定の値が含まれているデータのみを検索します.{"amenities":["Shampoo"]}このクエリは、amenitiesフィールドのShampooを検索しません.amenitiesフィールドの値が["Shampoo"]のドキュメントを探します.
    このように混んでこそ、シャンプーを含む化粧品を見つけることができます.{"amenities":{"$all":["Shampoo"]}}

    PROJECTION

    db.listingsAndRevies.find({"amenities":{"$size":20,
    "$all":["internet","wifi","kitcen","heating",...]}},{"price":1,"address":1}).pretty()
    このようにしてクエリが記述され、カーソルに含まれるのはpriceおよびaddressフィールドのみである.(0の場合は除外)

    $elemMatch(projection)


    以下のように記述すると、$elemMatchとして指定された配列フィールドがドキュメントに存在し、条件に合致する要素がある場合にのみ、このフィールドが結果に含まれます.
    db.grades.find({"class_id":431},{"scores":{"$elemMatch":{"score":{"$gt":85}}}})

    $elemMatch(query)


    上のelemMatchをfindのquery条件で使うと、
    この条件を満たすドキュメントのすべてのフィールドをロードします.