createIndexes (インデックスの作成)
最終更新:2026-10-09
createIndexes (インデックスの作成)
createIndexes はコレクションにインデックスを作成します。単一フィールド、複合、ユニーク、TTL、テキスト、地理空間に対応します。mongosh では通常 db.collection.createIndex({ field: 1 }) のヘルパーを使います。インデックス構築はリソースを消費します。大きなコレクションでは 4.2 以降デフォルトのハイブリッド構築中も読み書きが継続します。複合インデックスのフィールド順序がサポートされるクエリを左右します。
| カテゴリ | 管理コマンド |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
db.orders.createIndex({ userId: 1, createdAt: -1 })
db.users.createIndex({ email: 1 }, { unique: true })
db.runCommand({ createIndexes: "orders", indexes: [{ key: { userId: 1 }, name: "user" }] })
⚙️ パラメータ
| key | インデックスキーと方向(例: { userId: 1, createdAt: -1 })。 |
|---|---|
| unique | 一意インデックスにする場合は true を設定します。 |
| name | インデックス名。省略時は自動生成されます。 |
戻り値:numIndexesBefore、numIndexesAfter、および ok を返します
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// createIndexes: 複合・ユニークインデックス
use shop
db.orders.createIndex({ userId: 1, createdAt: -1 })
db.users.createIndex({ email: 1 }, { unique: true })
出力:
{ numIndexesBefore: 1, numIndexesAfter: 2, ok: 1 }
📌 注意事項
- 複合インデックスのフィールド順序が、どのクエリとソートをサポートするかを決める
- ユニークインデックスは重複を duplicate key エラーで拒否する
- インデックスはディスクとメモリを消費する。全フィールドに作らない
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Q複合インデックスではフィールドをどう並べますか?
A等価フィルタのフィールドを先に、範囲・ソートのフィールドを後に置きます。
Qユニークインデックスで重複を挿入するとどうなりますか?
Aduplicate key エラーで挿入が失敗します。
Qインデックス作成はデータベースをロックしますか?
A4.2 以降のハイブリッド構築では読み書きが継続しますが、CPU と I/O は消費されます。