如何保证MongoDB文档的数据质量_JSON Schema验证规则配置
MongoDB 5.0 启用 JSON Schema 验证需显式配置 validator、validationLevel推荐 strict和 validationAction建议先设 warnschema 不自动映射 ObjectId/Date需正则或 format 校验嵌套字段须 properties 逐层定义数组用 items开启后不合规写入将报错回滚仅能通过 collMod 修改 validator 或 validationAction。如何在 MongoDB 5.0 中启用 JSON Schema 验证MongoDB 原生支持 JSON Schema 验证但不是默认开启的——必须显式配置 validator 并设置 validationLevel 和 validationAction。不配这两项即使写了 schema 也完全不生效。validationLevel 推荐设为 strict仅对新插入/更新文档校验避免历史脏数据导致集合不可写validationAction 建议先用 warn校验失败只打日志不阻断写入方便灰度观察必须通过 collMod 命令或 createCollection 一次性声明不能后期“补加” validator 到已有集合除非重建JSON Schema 字段类型与 MongoDB 类型的对应陷阱JSON Schema 的 string、number 等类型不会自动映射到 MongoDB 的 ObjectId、Date 或 BinData。比如写 {type: string}MongoDB 会接受任意字符串但不会拒绝一个形如 507f1f77bcf86cd799439011 的 ObjectId 字符串——它仍是合法 string。需要 ObjectId 校验得用 pattern 正则{pattern: ^[0-9a-fA-F]{24}$}需要 Date 校验不能只靠 type: string得加 format: date-time且客户端写入时必须是 ISO 字符串如 2023-10-05T12:34:56ZMongoDB 不会把数字时间戳如 1696509296000自动转成 Daterequired 只检查字段是否存在不检查是否为 null要排除 null得额外加 not: {type: null}嵌套对象和数组的验证写法差异对 address.city 这类路径校验不能直接在顶层 schema 写 address.city: {type: string} —— JSON Schema 不支持点号路径必须用 properties 逐层嵌套。 Cleanup.pictures 智能移除图片中的物体、文本、污迹、人物或任何不想要的东西