2時間でMongoDB入門: Docker + mongoshで「説明できる最低限」を固めた話

学習したことをAIで整理

はじめに

MongoDBを実務で極める前に、まずは会社のスキルマップ要件を満たせるレベルまで、短時間で学習しました。
ゴールは「詳しくなること」ではなく、何をやって、何を理解したかを説明できる状態にすることです。

今回の条件は次の通りです。

  • 学習時間は2時間以内
  • Docker + mongosh のCLIのみ
  • Laravel連携や本番運用はやらない
  • 深掘りしすぎない

この記事でやったこと(結論)

  • DockerでMongoDBを起動
  • mongoshで接続
  • CRUDを一通り実行
  • Indexを作成して explain("executionStats")IXSCAN を確認
  • Aggregationの最小例($group)を実行
  • スキーマ設計の最低限(ドキュメントモデル、埋め込み/参照、整合性ルール)を整理

最小セットアップ手順

# 1) MongoDB起動(Terminal)
docker run --name mongodb -p 27017:27017 -d mongo:8

# 2) mongoshに入る(Terminal)
docker exec -it mongodb mongosh

# 3) 学習用DBに切替(mongosh内)
use skillmap_db

補足: MongoDBは「テーブル選択」ではなく、use DB名 でDBを切り替えて、db.users... のようにコレクションを操作します。

CRUDを最小で確認

Create

db.users.insertOne({ name: "Taro", age: 25, city: "Tokyo" })
db.users.insertMany([
  { name: "Aki", age: 20, city: "Tokyo" },
  { name: "Ken", age: 30, city: "Tokyo" },
  { name: "Mina", age: 22, city: "Osaka" }
])

Read

db.users.findOne({ name: "Taro" })
db.users.find({ city: "Tokyo" })

Update


db.users.updateOne({ name: "Taro" }, { $set: { age: 26 } })

Delete

db.users.deleteOne({ name: "Taro" })

Indexを確認(作るだけで終わらせない)

db.users.createIndex({ name: 1 })
db.users.getIndexes()
db.users.find({ name: "Aki" }).explain("executionStats")

explain の結果で以下を確認できれば、インデックス利用を説明できます。

stage: 'IXSCAN'
keyPattern: { name: 1 }
indexName: 'name_1'

学んだこと

  • Indexは検索を速くする
  • ただし、増やしすぎると登録・更新コストが増える
  • なので「よく検索する項目」に絞る

Aggregationの最小例

db.users.aggregate([
  { $group: { _id: "$city", count: { $sum: 1 } } }
])

結果例:

Tokyo: 2
Osaka: 1

学んだこと

Aggregationは「処理の流れ」で捉えると理解しやすいです。

  • $match: 対象を絞る
  • $group: 集計する
  • $sort: 並び替える

設計理解(最低限)

ドキュメントモデルの特徴

  • 1ドキュメントに配列やネストを持てる
  • 関連情報を1件として保存しやすい

埋め込みと参照の使い分け

  • 埋め込み向き: 一緒に読む・一緒に更新することが多い
  • 参照向き: データが大きい・独立して更新される・共有される

    整合性で決めること

  • 必須項目(例: name, age, city)
  • 型の統一(age は数値で統一)
  • 命名規則(表記揺れ防止)
  • 重複データの更新漏れ対策(どこを正とするか決める)

NoSQLとRDBMSの違い(今回の理解)

  • MongoDBはスキーマレスで開始しやすい
  • ただし、設計ルールがないとデータが崩れる
  • つまり「自由度が高い」だけでなく「運用ルールが必要」

まとめ

2時間の範囲でも、Docker + mongoshで手を動かせば、
CRUD / Index / Aggregation / 設計の最低限は十分説明できる状態にできます。

今回の到達点は、実務を極めることではなく、次を明確に言えることです。

  • 何を実行したか
  • どの結果を確認したか(例: IXSCAN)
  • 何を理解したか(設計と整合性の最低限)

コメント

タイトルとURLをコピーしました