初めてのMongoDB実験

MongoDBBeginner
オンラインで実践に進む

はじめに

LabExへようこそ。これは初めてのMongoDB実験です。データベースを使ったことがなくても心配はいりません。各ステップを順番に説明します。

まず、MongoDBについて確認しましょう。MongoDBは、柔軟なドキュメント形式でデータを保存するデータベースシステムです。従来のスプレッドシートとは異なり、コンピューター上でファイルをフォルダーに整理するように、より自然な形でデータを整理できます。

この実験では、次の操作を学びます。

  1. MongoDB shellを起動し、その役割を理解する
  2. 最初のデータベースとコレクションを作成する
  3. MongoDBにデータを追加し、表示する
  4. データを検索、更新、削除する

これらのスキルは、MongoDBを学ぶための基礎になります。それでは始めましょう。

実験を開始するには、下の Continue ボタンをクリックしてください。

MongoDB Shellを起動する

このステップでは、LabEx VMでターミナルを開き、MongoDB shellを起動します。

速度と使いやすさを考慮し、Terminal Interface の使用をおすすめします。MongoDB関連の実験では、これがデフォルトのインターフェースです。

open the terminal in terminal interface

より従来型のターミナル環境を使いたい場合は、Desktop Interface を使用してください。デスクトップの左側にある Xfce Terminal アイコンをクリックします。

open the terminal in desktop interface

どちらの方法でも同じ実験環境にアクセスでき、操作結果も同じです。使いやすい方を選んでください。

それでは、データベースの操作パネルにあたるMongoDB shellを起動しましょう。shellではMongoDBに直接命令できます。コマンドを入力すると、MongoDBが結果を返します。

MongoDB Shellを起動するには、ターミナルで次のコマンドを入力してEnterキーを押します。

mongosh

ローカルのMongoDBインスタンスへの接続に成功すると、接続メッセージが表示されます。出力は次のようになります。

Current Mongosh Log ID: 65a7f3e5f1a1234567890abc
Connecting to:          mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+x.y.z
Using MongoDB:          X.X.X
Using Mongosh:          X.X.X

For mongosh info, see: https://docs.mongodb.com/mongodb-shell/

test>

test> プロンプトが表示されていれば、mongosh shellの中に入り、デフォルトの test データベースに接続されています。

次に、サーバー上に存在するすべてのデータベースを一覧表示します。mongosh shellで次のコマンドを入力してください。

show dbs

MongoDBが内部用途に使用するデフォルトのデータベース一覧が表示されます。

admin     40.00 KiB
config   112.00 KiB
local     40.00 KiB

次のステップでは、自分のデータベースを作成します。

データベースを作成してドキュメントを挿入する

このステップでは、データベースを作成し、最初のドキュメントを挿入します。MongoDBでは、データベースを明示的に作成する必要はありません。データを最初に保存したときに、自動的に作成されます。新しいデータベースへ切り替えるには、use コマンドを使用します。

mylab_database という名前のデータベースに切り替えます。mongosh shellで次のコマンドを入力してください。

use mylab_database

shellに switched to db mylab_database と表示されます。データベース自体はまだ作成されていませんが、これで操作対象がそのデータベースに切り替わりました。

MongoDBのデータは、ドキュメントの集合であるコレクションに保存されます。ドキュメントは、キーと値の組み合わせで構成されます。最初のドキュメントを挿入して、users コレクションを作成しましょう。

insertOne() メソッドを使って、users コレクションに1件のドキュメントを追加します。

db.users.insertOne({ name: "JohnDoe", age: 30, city: "NewYork" })

このコマンドの内容を確認しましょう。

  • db:現在のデータベース(mylab_database)を表します。
  • users:コレクション名です。コレクションは自動的に作成されます。
  • insertOne():1件のドキュメントを挿入するメソッドです。
  • {...}:ドキュメント本体です。nameagecity などのフィールドを含みます。

MongoDBは挿入が成功したことを示し、ドキュメントに自動生成した一意の _id を返します。

{
  acknowledged: true,
  insertedId: ObjectId("...")
}

ObjectId は、すべてのドキュメントに自動的に割り当てられる一意の識別子です。

次に、ドキュメントが追加されたことを確認します。find() メソッドを使って、users コレクション内のすべてのドキュメントを表示してください。

db.users.find()

今挿入したドキュメントが表示されます。

[
  {
    _id: ObjectId("..."),
    name: 'JohnDoe',
    age: 30,
    city: 'NewYork'
  }
]

複数のドキュメントを挿入する

このステップでは、複数のドキュメントを一度に追加します。insertMany() メソッドは、引数としてドキュメントの配列を受け取ります。

新しい books コレクションを作成し、1つのコマンドで3冊の本を追加しましょう。

db.books.insertMany([
    { title: "MongoDBBasics", author: "JaneSmith", year: 2023 },
    { title: "PythonProgramming", author: "JohnDoe", year: 2022 },
    { title: "DataScienceHandbook", author: "AliceJohnson", year: 2021 }
])

配列を定義する角括弧 [ ] に注目してください。配列内の各オブジェクト {...} が、それぞれ1件のドキュメントになります。

MongoDBは操作が成功したことを示し、挿入したすべてのドキュメントの _id を返します。

{
  acknowledged: true,
  insertedIds: {
    '0': ObjectId("..."),
    '1': ObjectId("..."),
    '2': ObjectId("...")
  }
}

新しい books コレクション内のすべてのドキュメントを確認するには、もう一度 find() メソッドを使用します。

db.books.find()

追加した3件すべてのドキュメントが表示されます。

ドキュメントを検索して件数を数える

このステップでは、挿入したデータを取得し、その件数を数えます。

コレクション内のドキュメントの総数を数えるには、countDocuments() メソッドを使用します。books コレクションにある本の数を数えてみましょう。

db.books.countDocuments()

合計件数が返されます。

3

特定のドキュメントを検索するには、find() メソッドに検索フィルターを渡します。検索フィルターは、検索条件を指定するドキュメントです。

たとえば、JohnDoe が書いた本をすべて検索するには、次のクエリを使用します。

db.books.find({ author: "JohnDoe" })

フィルター { author: "JohnDoe" } によって、author フィールドの値が JohnDoe であるドキュメントだけが返されます。

数値を条件にして検索することもできます。2023年に出版された本をすべて検索してみましょう。

db.books.find({ year: 2023 })

このコマンドは、MongoDBBasics のドキュメントを返します。find() メソッドを使えば、必要なデータを正確に取得できます。

ドキュメントを更新して削除する

このステップでは、コレクション内のドキュメントを更新および削除します。

既存のドキュメントを変更するには、updateOne() メソッドを使用します。このメソッドには、対象ドキュメントを選択するフィルターと、変更内容を指定する更新ドキュメントを渡します。$set 演算子を使うと、指定したフィールドだけを変更できます。

PythonProgramming の出版年を 2022 から 2024 に変更しましょう。

db.books.updateOne(
    { title: "PythonProgramming" },
    { $set: { year: 2024 } }
)

MongoDBは、1件のドキュメントを見つけて変更したことを返します。

{
  acknowledged: true,
  insertedId: null,
  matchedCount: 1,
  modifiedCount: 1,
  upsertedCount: 0
}

更新後のドキュメントを確認します。

db.books.find({ title: "PythonProgramming" })

結果で、PythonProgrammingyear2024 になっていることを確認できます。

次に、コレクションからドキュメントを削除します。

特定の条件に一致するドキュメントを1件削除するには、deleteOne() メソッドを使用します。タイトルが MongoDBBasics の本を削除しましょう。

db.books.deleteOne({ title: "MongoDBBasics" })

1件のドキュメントが削除されたことを示す結果が返されます。

{ acknowledged: true, deletedCount: 1 }

条件に一致する複数のドキュメントを削除するには、deleteMany() を使用します。このメソッドでは、クエリ演算子を使ってより複雑な条件を指定できます。たとえば、$lt は「より小さい」を表します。

2022年より前に出版された本をすべて削除しましょう。

db.books.deleteMany({ year: { $lt: 2022 } })

このコマンドは、year フィールドが2022未満であるすべてのドキュメントを削除します。今回のデータでは、DataScienceHandbook が削除されます。

残っている本を確認するため、最後にもう一度 find() コマンドを実行します。

db.books.find()

コレクションには PythonProgramming だけが残っているはずです。

これで、MongoDBの基本的なCRUD(Create、Read、Update、Delete)操作を練習できました。mongosh shellを終了するには、次のコマンドを入力します。

exit

まとめ

初めてのMongoDB実験の完了、おめでとうございます。MongoDBデータベースでデータを管理するための基本操作を学び、実際に練習しました。

この実験では、次の操作を学びました。

  • MongoDBサーバーと対話するために mongosh shellを起動する。
  • use コマンドを使ってデータベースを切り替える。
  • insertOne()insertMany() を使って、1件または複数のドキュメントを挿入する。
  • クエリフィルターの有無にかかわらず、find() を使ってドキュメントを取得する。
  • countDocuments() を使ってコレクション内のドキュメント数を数える。
  • updateOne()$set 演算子を使ってドキュメントを更新する。
  • deleteOne()deleteMany() を使ってドキュメントを削除する。

これらの基本スキルは、MongoDBを使った強力なアプリケーション開発の土台になります。上達には練習が重要です。学んだコマンドを使って、さらに試してみてください。