sql >> データベース >  >> NoSQL >> MongoDB

MongoDBでデータベースとコレクションを管理する方法


    はじめに

    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を使用する際の重要なスキルです。これらの基本的な編成ツールを使用すると、関連するドキュメントをグループ化し、情報のサブセットを照会し、さまざまなタイプのデータの承認ポリシーを設定できます。これらの構造を効果的に管理する方法に精通することで、より少ない驚きでデータをより効果的に管理できるようになります。




    1. ドキュメントから一部のフィールドを除外する方法

    2. PVとPVCを使用したKubernetesNFSストレージ

    3. ハッシュを安全にロードし、値が存在する場合はブール値に変換する方法

    4. モバイルまたはブラウザベースのアプリケーションからMongoDBを接続する