collMod(修改集合配置)
最后更新:2026-10-09
collMod(修改集合配置)
collMod修改已有集合的配置:TTL索引的过期时间(expireAfterSeconds)、模式验证器(validator)、索引选项等。命令文档第一个字段是集合名。注意:collMod只能调整已有集合,创建集合用create命令。修改validator只影响新写入与更新后的文档。
| 分类 | 管理命令 |
|---|---|
| MongoDB 版本 | 1.0+ |
| 示例语言 | mongosh (Shell) |
📝 语法
db.runCommand({ collMod: "<集合名>", 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改过期时间
- validator修改只影响新写入与更新后的文档
- 命令字段名为集合名,值放配置
🏷️ 相关标签
💡 相关案例
📚 相关教程
❓ 常见问题
Q怎么修改TTL过期时间?
A用collMod配index.expireAfterSeconds,不用重建索引。
QcollMod能改哪些配置?
Avalidator、TTL过期时间、索引选项、分片集合扩容等。
Q修改validator会影响已有文档吗?
A不影响,只校验新写入与更新后的文档。