MongoDB集合Schema Validation设置脚本执行失败,无法配置校验器
问题原因及解决方案
错误核心原因
你的操作触发了MongoDB的内置限制:local是MongoDB的内部系统数据库,专门用于存储副本集配置、分片元数据等系统级数据,MongoDB明确禁止在该数据库的集合上添加文档校验器(Schema Validation),这就是错误码72(InvalidOptions)的直接原因。
你执行的校验器脚本
var validator={ $jsonSchema : { bsonType : "object", additionalProperties : true, required : [ "productName" ], properties : { productName : { bsonType : "string", description : "must be a string and is required" } } } }; db.runCommand( { collMod: "product", validator, validationLevel: "strict" })
解决步骤
- 第一步:确认当前操作的数据库
执行db.getName()命令,检查是否误进入了local数据库。 - 第二步:迁移业务集合到自定义数据库
如果product是业务集合,不应放在local库中,需迁移到业务数据库(比如products_db、test等):- 导出
local.product的数据:mongodump --db local --collection product --out ./product_dump - 导入到目标数据库(以
products_db为例):mongorestore --db products_db --collection product ./product_dump/local/product.bson - (可选)删除
local库中的原集合:use local db.product.drop()
- 导出
- 第三步:在目标集合添加校验器
切换到目标数据库后,重新执行校验器脚本:use products_db var validator={ $jsonSchema : { bsonType : "object", additionalProperties : true, required : [ "productName" ], properties : { productName : { bsonType : "string", description : "must be a string and is required" } } } }; db.runCommand( { collMod: "product", validator, validationLevel: "strict" })
内容的提问来源于stack exchange,提问作者CSK 4ever
相关产品推荐
相关产品推荐

