You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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等):
    1. 导出local.product的数据:
      mongodump --db local --collection product --out ./product_dump
      
    2. 导入到目标数据库(以products_db为例):
      mongorestore --db products_db --collection product ./product_dump/local/product.bson
      
    3. (可选)删除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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 16:47:11