53日目TIL
4981 ワード
開始します。
今日はNoSQLで広く使われているツールデータベースMongoDBについて学びました.MongoDBをインストールし、クエリーを学習し、実際に使用します.これまで学習したリレーショナル・データベースと比較して、どのような利点があり、どのような場合に使用すればよいのでしょうか.
MongoDB
NoSQL
NoSQLは広く使用されている用語で、リレーショナル・テーブルの従来のメソッドを使用しないデータ・リポジトリを指し、MongoDBは広く使用されているNoSQLデータベースです.
NoSQLを使用する場合
Atlas Cloud
MongoDBはAtlasを使用してクラウド上にデータベースを構築します.AtlasはGUIとCLIを使用してデータを可視化、分析、エクスポート、構築することができ、Atlasユーザーはクラスタを配置し、クラスタはデータをパケットサーバに格納することができる.
このサーバはReplica setからなり、Replica setは同じデータを格納する関連するいくつかのMongoDBインスタンスの集合である.
用語
JSON vs. BSON
JSON
shellを使用してドキュメントを問合せまたは更新する場合、ドキュメントはJSON形式で出力されます.JSON形式でドキュメントを作成するには、次の条件を満たす必要があります.
カッコ
{}
で開始と終了も行います.:
)で区切らなければなりません.フィールドと値を含むペアはカンマ(,)で区切られます.""
)で囲まれます.mongoimport --uri "<Atlas Cluster URL>" --drop=<filename>.json
Exportmongoexport --uri "<Atlas Cluster URL>" --collection=<collection name> --out=<filename>.json
BSON
JSON形式は読みやすく、多くの開発者が使いやすいが、パッケージ速度が遅く、メモリの使用効率が低い.また、基本データ型のみがサポートされているため、利用可能なデータ型は制限されています.
これらの問題を解決するためにBSON形式を導入した.
BSONは、コンピュータ言語に類似したバイナリ表現に基づいており、JSONよりもメモリの使用が効率的で、より速く、より軽く、より柔軟であり、より多くのデータ型を使用することができます.
MongoDBでは、JSON形式で作成されたコンテンツをデータベースに追加でき、クエリーが容易です.しかし、その内部では、BSONはその速度、効率、柔軟性の利点でデータを格納し、使用します.
Import
mongorestore --uri "<Atlas Cluster URL>" --drop dump
Exportmongodump --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の使用に慣れるために、追加学習の演算子と集約フレームワークを練習する必要があります.
Reference
この問題について(53日目TIL), 我々は、より多くの情報をここで見つけました https://velog.io/@bbaa3218/TIL-53일차テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol