[TIL] Mongo DB

3281 ワード

最終プロジェクトでは新しいスタックを使ってみたいと思いますが、そのうちの1つはMongoDBなので、週末の時間を利用して整理して勉強しやすいようにするつもりです.

Mongo DB


Mongo DBはNoSQLであり、SQLデータベースに比べて、モードを記述することなく、より自由にデータを格納できます.
1.大量のデータを保存する(ほとんどデータ構造がない);
2.クラウドコンピューティングとストレージスペースを十分に活用する.
3.サービスの迅速な導入とデータ構造の頻繁な更新にNoSQLを使用します.

クリーンアップ用語


ろくおんき
同じデータを格納している少数の接続済みマシンは、1台のマシンに問題が発生したときにデータが変わらないことを保証します.
≪インスタンス|Instance|emdw≫
ローカルまたはクラウド上で特定のソフトウェアを実行するスタンドアロンでは、MongoDBはデータベースです.
クラスタ
データを格納するサーバ・グループとインスタンスの会議
->インスタンスの集合をクラスタと呼びます.このクラスタでは、単一のクラスタ内の複数のインスタンスが同じコピーを有します.これはレプリカセットと呼ばれています.
記帳する
「ドキュメント」は、データをフィールド値ペア(Field-Value pair)として格納および整理する方法です.たとえば、オブジェクトなどです.
「ドキュメント」では、フィールドはデータの一意の識別子であり、値は指定された識別子に関連するデータを表します.
ドキュメント
フィールド-値ペアとして保存されたデータ
フィールド
データポイントの一意の識別子
値(Value)
指定された識別子に関連するデータ
コレクション
MongoDB内のエンティティ・リポジトリで、通常はエンティティ間の共通フィールドが含まれます.各データベースには複数のコレクションがあり、各コレクションには複数のドキュメントセットがあります.
ドキュメントはjson形式で保存する必要があります.jsonは読みやすいが、パケットが遅く、メモリの使用効率が悪い.また、jsonは利用可能なタイプに制限があります.これらの問題を解決するためにbsonフォーマットを使用します.
まず、MongoimportコマンドとMongoexportコマンドはJSON形式でデータのインポートとエクスポートを行います.
BSON形式でインポートおよびエクスポートするコマンドmongorestoreおよびmongodump.

cli


create


「モンゴディビはコレクションやdbを追加するのが自由なので便利です」使用するdb名「」を入力すると、dbが作成されます.そしてこの状態で集合db.컬렉션이름.insert({"test":"1"})と入力すると、新しいdbとセットに{「test」:「1」}を持つdbが作成されます.ただし、値を入力しないとshowデータベースとshow collectionsは表示されません.保存するには値を入力する必要があるようです.

read

db.collectionName.find({찾는필드:찾는값})の形式で値を検索できます.形態はsequelize cliに似ていてすぐに慣れると思います.mysqlのようにモンゴルdbもよく使えます.
findは通常countとprettyとともに使用されます.個数を知りたいときにcountを使い、prettyはjsonの形で1行1行に値を表示しますが、これがいわゆるきれいですか?が表示されます.

update

db.collectionName.updateMany/One({찾는필드:찾는값}, {"$inc"/"$set"/"$push":{바꿀필드:바꾸는 값})の形式で作成されます.
$inc : 입력값 만큼 값을 증가 > 기존의 값에서 입력 값 만큼 증가 된 값을 저장합니다.
$set : 입력값으로 값을 수정 > 기존 값을 입력 값으로 수정합니다. 
$push :  요소를 추가 > 새로운 필드와 값을 추가할 때 사용합니다.

delete

db.collectionName.deleteMany/One({찾는필드:찾는값})形式で値を消去します.

コレクションの削除

db.collectionName.drop()

比較演算子


(ソース:コードstaits)db.collectionName.find({찾는 필드:{비교 연산자:찾는값}})の形式で入力します.

論理演算子


(ソース:コードstaits)
デフォルトではfindを使用するとandが機能します.db.collectionName.find(논리 연산자:[{찾는 필드1:찾는값1}, {찾는 필드2:찾는값2}])のフォーマットを入力できます.

ひょうじえんざんし


(ソース:コードstaits)
表現演算子を使用する場合、比較演算子を使用する方法は少し異なります.
従来の比較演算子入力方法はdb.collectionName.find({찾는 필드:{비교 연산자:찾는값}})である.
表現演算子を使用すると、
これは、db.collectionName.find({"$expr":{논리 연산자:[비교연산자:{찾는 필드1:찾는값1}, 비교연산자:{찾는 필드2:찾는값2}]}})のような論理演算子を使用する方法と同じである.

配列演算子


$pushでは、フィールドをタイルタイプのフィールドに置き換えることができます.
$push :  요소를 추가 > 새로운 필드와 값을 추가할 때 사용합니다.
$allを使用すると、指定した要素を含むすべてのエンティティを検索できます.順序にかかわらず.
結果カーソルを配列の長さに基づいて制限するには、クエリに$sizeを追加します.
投影、サブエンティティチェックの追加