学習したことを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)
- 何を理解したか(設計と整合性の最低限)

コメント