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 updateexpireAfterSecondscannot 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仅记录验证违反消息并允许操作继续进行:
有关更多信息,请参见模式验证。