collMod
¶collMod
使得可以向集合中添加选项或修改视图定义。
注意
该命令修改的视图不引用实例化视图。有关按需实例化视图的讨论,请参见
$merge
。
该命令采用以下原型形式:
从MongoDB 4.2开始
对于,请指定当前数据库中的集合或视图的名称。<collection or view>
使用输出中的userFlags
字段
db.collection.stats()
检查为集合启用的选项。
index
¶用以下格式的文档指定键或索引名称,以及新的到期时间:
在此示例中,<index_spec>
是集合中的现有索引。如果多个索引具有相同的键模式,则要求用户按名称指定索引。seconds
是从当前时间减去的秒数。
成功后,collMod
将返回包含字段的文档,
expireAfterSeconds_old
并将其expireAfterSeconds_new
设置为各自的值。
失败时,collMod
返回文档,如果不存在现有
字段或指定的字段
不存在。no
expireAfterSeconds field to update
expireAfterSeconds
cannot find index { **key**:
1.0 } for ns **namespace**
keyPattern
validator
¶3.2版中的新功能。
validator
允许用户为集合指定验证规则或表达式。有关更多信息,请参见模式验证。
该validator
选项采用指定验证规则或表达式的文档。您可以使用相同的运营商为指定表达式查询操作符:使用外$geoNear
,
$near
,$nearSphere
,$text
,和
$where
。
注意
admin
,
local
和config
数据库。system.*
集合指定验证器。validationLevel
¶3.2版中的新功能。
该validationLevel
决定的MongoDB如何严格意义上的更新过程中应用验证规则到现有的文件。
validationLevel |
描述 |
---|---|
"off" |
不验证插入或更新。 |
"strict" |
默认将验证规则应用于所有插入和所有更新。 |
"moderate" |
将验证规则应用于现有有效 文档的插入和更新。不要将规则应用于现有无效 文档的更新。 |
validationAction
¶3.2版中的新功能。
该validationAction
选项确定是error
对无效文档还是仅对warn
违规,但允许无效文档。
重要
文件的验证仅适用于由validationLevel
。
validationAction |
描述 |
---|---|
"error" |
默认文档必须在写入之前通过验证。否则,写入操作将失败。 |
"warn" |
文档不必通过验证。如果文档验证失败,则写操作将记录验证失败。 |
要查看集合的验证规范,请使用
db.getCollectionInfos()
方法。
注意
该命令修改的视图不引用实例化视图。有关按需实例化视图的讨论,请参见
$merge
。
pipeline
¶如果在运行带有访问控制的MongoDB部署上修改视图,则为必需。
视图定义是公共的;即db.getCollectionInfos()
,explain
对视图的操作将包括定义视图的管道。因此,请避免在视图定义中直接引用敏感字段和值。
如果部署强制执行身份验证/授权,则必须具有以下特权才能运行collMod
命令:
所需特权 | |
---|---|
修改非上限集合 | collMod 在数据库中 |
修改视图 |
|
内置角色dbAdmin
提供所需的特权。
以下示例将验证器添加到名为的现有集合中
contacts
。
注意
MongoDB 3.6添加了$jsonSchema
运算符以支持JSON模式验证。
使用moderate
validationLevel
,MongoDB将验证规则应用于插入操作,并将操作更新到已经满足验证条件的现有文档。不检查不满足验证条件的现有文档的更新的有效性。
使用warn
validationAction
,MongoDB会记录所有违规情况,但允许进行插入或更新。
例如,以下插入操作违反了验证规则。
但是,由于validationAction
是warn
唯一的,因此MongoDB仅记录验证违反消息并允许操作继续进行:
有关更多信息,请参见模式验证。