はじめに
MongoDBは、ドキュメント指向の構造を使用して、データを保存、管理、および処理します。個々のドキュメントはコレクションに編成され、コレクションはデータベースに保存されます。各ドキュメントのスキーマは静的スキーマによって定義されていないため、ドキュメントベースのシステムは、テーブルとレコードで構成されるリレーショナルシステムよりも柔軟性があります。
このガイドでは、MongoDBがデータを整理するために使用する構造を作成および管理する方法について説明します。データベースを作成および管理する方法と、類似または関連するドキュメントを保持するためのコレクションを作成する方法について説明します。
既存のデータベースを表示する方法
新しいデータベースの作成を開始する前に、MongoDBが既存のデータベースに関する情報を検索するために提供するいくつかの方法を理解しておくと役立ちます。これは、変更を開始する前にシステムの現在の状態を理解するのに役立ちます。
アクセスできるシステム上のすべてのデータベースを表示するには、show dbs
を使用します 方法:
show dbs
admin 0.000GBconfig 0.000GBlocal 0.000GB
MongoDBは、システム上でアクセス可能なすべてのデータベースの名前と、それらの現在のストレージスペースの概要で応答します。
現在操作するように設定されているデータベースを確認するには、db.getName()
を使用します。 コマンドまたはその省略形のエイリアス、db
:
db
test
show dbs
にリストされていないデータベースを現在使用していることに気付くかもしれません。 指図。これは、MongoDBでは、最初のドキュメントをデータベースに書き込むまで、データベースが実際に作成されないためです。したがって、上記の出力例では、シェルはtest
で動作するように準備されています データベースですが、まだ存在していないため、show dbs
からは返されません。 コマンド。
別のデータベースに切り替えるには、use
を使用できます コマンド:
use admin
switched to db admin
現在のデータベースに関する基本的な情報を取得するには、db.stats()
を使用できます。 方法:
db.stats()
{ "db" : "admin", "collections" : 3, "views" : 0, "objects" : 4, "avgObjSize" : 278.25, "dataSize" : 1113, "storageSize" : 86016, "indexes" : 5, "indexSize" : 147456, "totalSize" : 233472, "scaleFactor" : 1, "fsUsedSize" : 2876923904, "fsTotalSize" : 25832407040, "ok" : 1}
出力には、データベース内のコレクションの数、ストレージ統計、インデックス情報などに関する情報が表示されます。
データベースの作成方法
MongoDBには、新しいデータベースを作成するための明示的なコマンドはありません。代わりに、前述のように、代わりに、新しいデータベースに新しいドキュメントを書き込みたいことをMongoDBに指定する必要があります。これらのドキュメントが作成されると、暗黙的にデータベースが作成されます。
新しいデータベースに書き込むためにMongoDBを準備するには、use
を発行します 存在しないデータベースに切り替えるコマンド。
ここでは、MongoDBをセットアップして、playground
という新しいデータベースを作成します。 :
use playground
switched to db playground
現在のデータベースをチェックすると、playground
データベースは現在、データベース関連のコマンドのターゲットです:
db
playground
ただし、前述のように、ドキュメントはまだ作成されていないため、データベース自体はまだ作成されていません。
show dbs
admin 0.000GBconfig 0.000GBlocal 0.000GB
実際に新しいデータベースを作成するには、最初に何かを作成する必要があります。
データベース内のコレクションを表示する方法
MongoDBでは、コレクション 実装する分類システムを使用してドキュメントをグループ化するために使用される構造です。それらはデータベース内に存在し、ドキュメントを保存します。
show collections
を使用すると、現在使用しているデータベースで利用可能なコレクションを確認できます。 メソッド。
ここでは、admin
に切り替えます デモンストレーションに利用できるいくつかのコレクションがあるデータベース:
use adminshow collections
system.rolessystem.userssystem.version
または、db.getCollectionNames()
を使用して、配列内の同じコレクション名を取得することもできます。 方法:
db.getCollectionNames()
[ "system.roles", "system.users", "system.version" ]
現在のデータベースのコレクションに関する追加情報を表示するには、db.getCollectionInfos()
を使用します 方法:
db.getCollectionInfos()
[ { "name" : "system.roles", "type" : "collection", "options" : { }, "info" : { "readOnly" : false, "uuid" : UUID("776b1fd7-6014-4191-b33c-21350b590627") }, "idIndex" : { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" } }, { "name" : "system.users", "type" : "collection", "options" : { }, "info" : { "readOnly" : false, "uuid" : UUID("8c824fd1-2150-4413-8fac-0b77d16505e5") }, "idIndex" : { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" } }, { "name" : "system.version", "type" : "collection", "options" : { }, "info" : { "readOnly" : false, "uuid" : UUID("7501483a-45cc-492e-a1fd-ccb4349650cb") }, "idIndex" : { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" } }]
オプションで、ドキュメントをコマンドに渡して結果をフィルタリングすることもできます。たとえば、system.version
に関する情報のみを表示する場合です。 コレクションの場合、次のように入力できます:
db.getCollectionInfos( { name: "system.version" })
[ { "name" : "system.version", "type" : "collection", "options" : { }, "info" : { "readOnly" : false, "uuid" : UUID("7501483a-45cc-492e-a1fd-ccb4349650cb") }, "idIndex" : { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" } }]
コレクションに含まれるドキュメントの数を確認するには、db.<collection>.count()
を使用します 方法。たとえば、次のコマンドは、system.users
にあるドキュメントの数を確認します。 コレクション:
db.system.users.count()
2
現在のデータベースのコレクションに関する基本的な統計を表示するには、db.printCollectionStats()
を使用します 方法:
db.printCollectionStats()
このコマンドは、簡単に消費できるよりも多くの情報を出力する場合がありますが、含まれていますが、コレクションの特性を詳しく調べる必要があるシナリオでは役立ちます。
コレクションの作成方法
新しいコレクションを作成するには、2つのオプションがあります。暗黙的または明示的にコレクションを作成できます。
データベースと同様に、MongoDBは、ドキュメントが最初にデータベースに書き込まれるときに、コレクションを自動的に作成できます。このメソッドは、まだ存在しないコレクションにドキュメントを挿入して、新しいコレクションを作成するようにMongoDBに指示します。
たとえば、playground
に戻すことができます 以前に興味を持ったデータベース。その名前空間に入ると、insert.()
を呼び出すことで、コレクションに新しいドキュメントを挿入できます。 新しいコレクションに使用する名前のコマンド。ここでは、equipment
という新しいコレクションのスライドに関するドキュメントを作成できます。 :
use playgrounddb.equipment.insert({name: "slide"})
switched to db playgroundWriteResult({ "nInserted" : 1 })
出力は、1つのドキュメントが書き込まれたことを示しています。上記のコマンドは、3つの別々のアクションを実行しました。まず、MongoDBがplayground
を作成しました use
で参照したデータベース 指図。また、equipment
も作成しました insert()
を呼び出すため、データベース内のコレクション そのコレクション名に対するコマンド。最後に、equipment
内に実際のドキュメントを作成します insert()
に提供した入力を使用したコレクション コマンド。
次のコマンドを使用して、これらのアクションがすべて実行されたことを確認できます。
show dbsshow collectionsdb.equipment.count()db.equipment.find()
出力には、playground
が表示されます。 これで、データベースはリストされたデータベースの1つになり、equipment
equipement
内に1つのドキュメントがあるというコレクションがリストされています コレクションであり、ドキュメントが{name: "slide"}
であること コマンドに挿入したドキュメント。
コレクションの作成に使用するもう1つのオプションは、db.createCollection()
を明示的に使用することです。 方法。これにより、ドキュメントを追加せずにコレクションを作成できます。
たとえば、playground
に新しいコレクションを作成できます maintenance.requests
というデータベース 次のように入力します:
db.createCollection("maintenance.requests")
{ "ok" : 1}
クエリを実行すると新しいコレクションが表示されることを確認できますが、ドキュメントがないことを確認できます:
show collectionsdb.maintenance.requests.count()
equipmentmaintenance.requests0
db.createCollection()
メソッドは、作成時にさまざまなオプションを指定できるため、主に便利です。たとえば、上限付きコレクションを作成する場合があります。 、これは、いっぱいになったときに最も古いドキュメントを削除することで、保存する割り当てサイズの上限を維持するコレクションです。
notifications
と呼ばれる上限付きコレクションを作成するには 最大で10240バイトの情報を保存できるので、次のように呼び出すことができます。
db.createCollection( "notifications", { capped: true, size: 10240 })
{ "ok" : 1}
これにより、上限付きのnotification
が作成されます コレクション。次のように入力して確認できます:
db.getCollecitonInfos({"options.capped": true})
[ { "name" : "notifications", "type" : "collection", "options" : { "capped" : true, "size" : 10240 }, "info" : { "readOnly" : false, "uuid" : UUID("dff7bfb0-1cfc-4170-ba60-fbb834ac6925") }, "idIndex" : { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" } }]
コレクションを削除する方法
コレクションを削除するには、drop()
を使用できます コレクション自体のメソッド。
たとえば、上限付きのnotification
を削除するには 作成したコレクションには、次のように入力できます:
db.notifications.drop()
true
現在のデータベースのコレクションを再度一覧表示することで、操作が成功したことを確認できます。
show collections
equipmentmaintenance.requests
データベースを削除する方法
データベース全体を削除するには、db.dropDatabase()
を呼び出します。 指図。これにより現在のデータベースが削除されるため、実行する前に正しいデータベースを使用していることを確認してください。
use playgrounddb.dropDatabase()
switched to db playground{ "dropped" : "playground", "ok" : 1 }
利用可能なデータベースのリストを確認する場合は、playground
表示されなくなりました:
show dbs
admin 0.000GBconfig 0.000GBlocal 0.000GB
新しいデータベースにまだ切り替えていないため、MongoDBはplayground
を作成するように設定されています。 データベースは、新しいコレクションまたはドキュメントを追加することを選択する必要があります。これはdb
で確認できます コマンド:
db
playground
結論
データベースとコレクションの作成と管理は、MongoDBを使用する際の重要なスキルです。これらの基本的な編成ツールを使用すると、関連するドキュメントをグループ化し、情報のサブセットを照会し、さまざまなタイプのデータの承認ポリシーを設定できます。これらの構造を効果的に管理する方法に精通することで、より少ない驚きでデータをより効果的に管理できるようになります。