createIndexes() (複数インデックスの作成)

最終更新:2026-10-09

createIndexes() (複数インデックスの作成)

createIndexes() は1回の呼び出しで複数のインデックスを作成します。例: `db.users.createIndexes([{ key: { age: 1 } }, { key: { email: 1 }, unique: true }])`。createIndex() をループするのに比べ、インデックス構築を単一のリクエストにまとめるため、初期セットアップやマイグレーションでより効率的です。各定義は key が必要で、オプションを持つことができます。_id インデックスは常に存在し、削除できないことに注意してください。

カテゴリインデックスと管理
MongoDB バージョン1.0+
例の言語mongosh(シェル)

📝 構文

db.<collection>.createIndexes([<indexSpecs>, ...])

⚙️ パラメータ

インデックス定義の配列各要素はキーと任意のフラグを持ちます(例: {key: {age: 1}, unique: true})。

戻り値:作成されたインデックスの名前のリスト。

▶ 例

以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):

// createIndexes: age インデックスと email のユニークインデックスを1回で作成する
const names = db.users.createIndexes([
  { key: { age: 1 } },
  { key: { email: 1 }, unique: true }
])
names

出力:

[ 'age_1', 'email_1' ]

📌 注意事項

さらなる実践ケースを近日公開予定。

📚 関連チュートリアル

❓ よくある質問

QcreateIndexes と createIndex、どちらが良いですか?
A複数のインデックスを1つのリクエストで構築するには createIndexes() を使います。単一なら createIndex() の方が読みやすいです。
QcreateIndexes で通常とユニークのインデックスを混在できますか?
Aできます。各スペックに独自のオプションを付けます。例: {key: {age: 1}} と {key: {email: 1}, unique: true}
Q重複するインデックスを作るとどうなりますか?
A同一のインデックスはスキップされ、既存の名前が返されます。エラーにはなりません。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%