MongoDB
エンジニアのためのWebチートシート
MongoDBは、ドキュメント指向のNoSQLデータベースです。 JSON風のドキュメントを柔軟に格納でき、スケーラビリティに優れています。 CRUD操作、クエリ・更新演算子、集約パイプライン、インデックス、データモデリングなどをチートシートにまとめました。
mongosh コマンド
接続
mongosh でデータベースに接続する方法です。
データベース & コレクション
データベースとコレクションの操作です。
ヘルパーコマンド
よく使うヘルパーメソッドです。
CRUD操作
Create(作成)
ドキュメントの挿入です。
Read(読み取り)
ドキュメントの検索です。
Update & Delete
updateOne / updateMany
upsert / findOneAndUpdate
replaceOne / delete
クエリ演算子
比較演算子と論理演算子の一覧です。
| 演算子 | 説明 |
|---|---|
$eq | 等しい — { age: { $eq: 30 } } ※ { age: 30 } と同等 |
$ne | 等しくない — { status: { $ne: "deleted" } } |
$gt / $gte | より大きい / 以上 — { age: { $gte: 20 } } |
$lt / $lte | より小さい / 以下 — { age: { $lt: 40 } } |
$in / $nin | いずれかに一致 / 不一致 — { status: { $in: ["active", "pending"] } } |
$and | 全条件を満たす(暗黙的ANDも可) |
$or | いずれかを満たす — { $or: [{ a: 1 }, { b: 2 }] } |
$not / $nor | 条件を否定 / いずれも満たさない |
要素 & 評価演算子
$exists / $type
$regex / $text / $expr
配列演算子
$all / $elemMatch / $size
配列フィールドに対するクエリ演算子です。
更新演算子
フィールドの値を変更する演算子の一覧です。
| 演算子 | 説明 |
|---|---|
$set | フィールドの値を設定 — { $set: { name: "Alice" } } |
$unset | フィールドを削除 — { $unset: { tmp: "" } } |
$rename | フィールド名を変更 — { $rename: { "old": "new" } } |
$inc | 数値を加算 — { $inc: { views: 1 } } |
$mul | 数値を乗算 — { $mul: { price: 1.1 } } |
$min / $max | 現在値より小さい/大きい場合のみ更新 |
$currentDate | 現在日時を設定 — { $currentDate: { updatedAt: true } } |
配列更新演算子
$push / $addToSet / $pull / $pop
$each / $sort / $slice
位置演算子 & arrayFilters
$ / $[]
$[identifier] + arrayFilters
集約パイプライン
基本ステージ
$match / $group
$sort / $skip / $limit / $project
$addFields
$lookup & $unwind
$lookup + $unwind
$unwind
$lookup + pipeline
$facet & $bucket
$facet
$bucket / $out / $merge
インデックス
MongoDB がサポートするインデックス種類の一覧です。
| 種類 | 用途 |
|---|---|
単一フィールド | 1つのフィールドの等値・範囲検索 |
複合 | 複数フィールドの組み合わせ検索 |
マルチキー | 配列フィールド(自動作成) |
テキスト | 全文検索($text クエリ) |
TTL | 一定時間後にドキュメントを自動削除 |
ユニーク | フィールド値の一意性を保証 |
部分 | 条件を満たすドキュメントのみインデックス |
ワイルドカード | 動的フィールドに対応(スキーマレス向け) |
インデックス作成
用途別のインデックス作成パターンです。
explain & 統計
explain
クエリの実行計画とパフォーマンス確認です。
データモデリング
埋め込み vs 参照
Embedding
Referencing
スキーマバリデーション
JSONスキーマによるドキュメントの検証ルールです。
トランザクション & 運用
トランザクション
複数操作のアトミック実行です。
ユーザー管理
createUser
ユーザーの作成と権限設定です。