はじめに
この実験 (Lab) では、MongoDB を扱うための基本的な手順を学びます。MongoDB Shell (mongosh) を使用して、データベースの作成、コレクションの追加、ドキュメントの挿入、および基本的なデータ管理操作を実行します。この実践的なアプローチにより、コアとなる MongoDB コマンドの実践的な経験が得られ、より高度なデータベースタスクのための強固な基盤を確立できます。
この実験 (Lab) では、MongoDB を扱うための基本的な手順を学びます。MongoDB Shell (mongosh) を使用して、データベースの作成、コレクションの追加、ドキュメントの挿入、および基本的なデータ管理操作を実行します。この実践的なアプローチにより、コアとなる MongoDB コマンドの実践的な経験が得られ、より高度なデータベースタスクのための強固な基盤を確立できます。
最初のステップは、MongoDB サーバーにその対話型シェルである mongosh を使用して接続することです。このツールを使用すると、データベースインスタンスに対して直接コマンドを実行できます。
ターミナルで、mongosh コマンドを実行して MongoDB Shell を起動します。
mongosh
接続メッセージが表示され、mongosh 環境に入ったことが示されます。
Current Mongosh Log ID: 65a7f3e8f5a8a9b3c4d5e6f7
Connecting to: mongodb://127.0.0.1:27017/
Using MongoDB: 8.0.2
Using Mongosh: 2.2.6
...
test>
test> プロンプトは、現在デフォルトの test データベースに接続されていることを示しています。プロジェクト用に新しいデータベースに切り替えましょう。MongoDB では、まだ存在しないデータベースに切り替えることができます。最初にデータを格納したときに自動的に作成されます。
use コマンドを使用して、my_store という名前の新しいデータベースに切り替えます。
use my_store
シェルが切り替えを確認します。
switched to db my_store
現在使用しているデータベースを確認するには、db と入力します。
db;
出力には現在のデータベース名が表示されます。
my_store
my_store データベースにいるので、次のステップはコレクションを作成することです。コレクションは MongoDB ドキュメントのグループであり、リレーショナルデータベースのテーブルに似ています。
products という名前のコレクションを作成しましょう。これは createCollection() メソッドを使用して明示的に行うことができます。
db.createCollection("products");
成功した操作は、成功を示すオブジェクトを返します。
{ ok: 1 }
products が作成されたことを確認するために、現在のデータベース内のすべてのコレクションを一覧表示できます。
show collections
products
コレクションが作成されたので、最初のドキュメントを挿入できます。ドキュメントは BSON オブジェクトであり、JSON ライクなドキュメントのバイナリエンコードされたシリアライゼーションです。
insertOne() メソッドを使用して、products コレクションに 1 つのドキュメントを追加します。
db.products.insertOne({
name: "Laptop",
price: 1200,
category: "Electronics"
});
MongoDB は挿入を確認し、新しいドキュメントの一意の _id を提供します。
{
acknowledged: true,
insertedId: ObjectId("...")
}
この ObjectId は各ドキュメントに対して自動的に生成され、その主キーとして機能します。
多くの場合、一度に複数のドキュメントをコレクションに追加する必要があります。MongoDB はこの目的のために insertMany() メソッドを提供しています。このメソッドは、insertOne() を複数回呼び出すよりも効率的です。
products コレクションにさらに 2 つの製品を追加しましょう。insertMany() メソッドは、ドキュメントオブジェクトの配列を引数として取ります。
db.products.insertMany([
{
name: "Keyboard",
price: 75,
category: "Electronics"
},
{
name: "Desk Chair",
price: 150,
category: "Furniture"
}
]);
出力は、操作が認識されたことを確認し、新しく挿入された各ドキュメントの _id 値を一覧表示します。
{
acknowledged: true,
insertedIds: {
'0': ObjectId("..."),
'1': ObjectId("...")
}
}
次に、products コレクション内のドキュメントの総数を確認しましょう。これには countDocuments() メソッドを使用できます。
db.products.countDocuments();
シェルは 3 を返すはずです。これは、前のステップのドキュメント 1 つと、先ほど追加した 2 つを反映しています。
3
データを挿入した後、それを取得して表示したいと思うでしょう。コレクションをクエリするための主なメソッドは find() です。
products コレクション内のすべてのドキュメントを表示するには、引数なしで find() メソッドを実行します。
db.products.find();
mongosh シェルは、出力を自動的に読みやすくフォーマットし、コレクション内の 3 つのドキュメントすべてを表示します。
[
{
_id: ObjectId("..."),
name: 'Laptop',
price: 1200,
category: 'Electronics'
},
{
_id: ObjectId("..."),
name: 'Keyboard',
price: 75,
category: 'Electronics'
},
{
_id: ObjectId("..."),
name: 'Desk Chair',
price: 150,
category: 'Furniture'
}
]
find() メソッドは、結果をフィルタリングするためのクエリドキュメントを受け取ることもできます。これにより、特定の基準に一致するドキュメントを見つけることができます。たとえば、「Electronics」カテゴリのすべての製品を見つけてみましょう。
db.products.find({ category: "Electronics" });
このコマンドは、category フィールドの値が「Electronics」であるドキュメントのみを返します。
[
{
_id: ObjectId("..."),
name: 'Laptop',
price: 1200,
category: 'Electronics'
},
{
_id: ObjectId("..."),
name: 'Keyboard',
price: 75,
category: 'Electronics'
}
]
このシンプルなフィルタリング機能は、コレクションから特定のデータを取得するための強力な機能です。
最終ステップでは、データベースからコレクションを削除する方法を学びます。この操作は元に戻すことができず、コレクションとそのすべてのドキュメントおよびインデックスを削除します。一時的なデータをクリーンアップしたり、不要になったコレクションを削除したりする場合に便利です。
これを実演するために、まず一時的なコレクションを作成しましょう。
db.createCollection("temp_data");
{ ok: 1 }
次に、temp_data コレクションに対して drop() メソッドを使用して削除します。
db.temp_data.drop();
コレクションが正常に削除された場合、コマンドは true を返します。
true
コレクションが削除されたことを確認するには、データベース内のすべてのコレクションを再度一覧表示できます。
show collections
出力には products コレクションのみが表示され、temp_data が削除されたことを確認できます。
products
これで、MongoDB でコレクションを管理するための基本的な操作は終了です。終了したら、mongosh シェルを終了することを忘れないでください。
exit;
この実験(Lab)では、MongoDB を操作するための基本的なスキルを学びました。まず、mongosh シェルを使用して MongoDB インスタンスに接続しました。次に、データベースとコレクションの作成、単一および複数のドキュメントの挿入、そして find() メソッドを使用したデータのクエリを練習しました。最後に、drop() コマンドを使用してコレクションを安全に削除する方法を学びました。これらのコア操作(作成、読み取り、削除)は、MongoDB をデータストアとして使用するあらゆるアプリケーションの構成要素です。これで、MongoDB 環境でデータを管理するための基本的な知識を習得しました。