collMod (コレクションの変更)
最終更新:2026-10-09
collMod (コレクションの変更)
collMod は既存コレクションの設定を調整します。TTL インデックスの有効期限(expireAfterSeconds)、スキーマバリデーター、インデックスオプションなどです。コマンドドキュメントの最初のフィールドがコレクション名です。collMod は既存コレクションの調整のみで、作成は create を使います。バリデーターの変更は新しい書き込みと更新ドキュメントにのみ適用されます。
| カテゴリ | 管理コマンド |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
db.runCommand({ collMod: "<collection>", validator: { ... } })
db.runCommand({ collMod: "sessions", index: { keyPattern: { lastAccess: 1 }, expireAfterSeconds: 3600 } })
⚙️ パラメータ
| validator | 新しい検証ルール($jsonSchema など)。 |
|---|---|
| index | インデックスオプションの変更(例: TTL の expireAfterSeconds)。 |
戻り値:ok: 1 と、変更されたオプションの旧値・新値を返します
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// collMod: TTL の有効期限を調整
use shop
db.runCommand({
collMod: 'sessions',
index: { keyPattern: { lastAccess: 1 }, expireAfterSeconds: 3600 }
})
出力:
{ expireAfterSeconds_old: 86400, expireAfterSeconds_new: 3600, ok: 1 }
📌 注意事項
- TTL の有効期限はインデックス作成後、collMod でのみ変更できる
- バリデーターの変更は新しい書き込みと更新ドキュメントにのみ適用される
- コマンドの最初のフィールドがコレクション名
🏷️ 関連タグ
💡 関連ケース
📚 関連チュートリアル
❓ よくある質問
QTTL の有効期限はどう変更しますか?
AcollMod の index.expireAfterSeconds を使います。インデックスの再構築は不要です。
QcollMod で変更できる設定は?
Aバリデーター、TTL 有効期限、インデックスオプション、シャーディングコレクションの拡張などです。
Qバリデーターの変更は既存ドキュメントに影響しますか?
Aいいえ。新しい書き込みと更新ドキュメントのみ検証されます。