当前位置: 首页 > news >正文

如何保证MongoDB文档的数据质量_JSON Schema验证规则配置

MongoDB 5.0+ 启用 JSON Schema 验证需显式配置 validator、validationLevel(推荐 strict)和 validationAction(建议先设 warn);schema 不自动映射 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:56Z"),MongoDB 不会把数字时间戳(如 1696509296000)自动转成 Daterequired 只检查字段是否存在,不检查是否为 null;要排除 null,得额外加 "not": {"type": "null"}嵌套对象和数组的验证写法差异对 address.city 这类路径校验,不能直接在顶层 schema 写 "address.city": {"type": "string"} —— JSON Schema 不支持点号路径,必须用 properties 逐层嵌套。 Cleanup.pictures 智能移除图片中的物体、文本、污迹、人物或任何不想要的东西

http://www.jsqmd.com/news/679000/

相关文章:

  • 渗透测试核心工具 BurpSuite 实战详解,零基础入门抓包改包,网安入门到进阶必备
  • Layui表单提交时如何防止用户重复点击提交按钮
  • 3分钟实现浏览器人脸识别:face-api.js零配置入门指南
  • 猫抓浏览器扩展:三步上手资源嗅探工具,轻松下载网页视频音频
  • 生物质锅炉自动上料控制系统功率MOSFET选型方案——高效、可靠与长寿命驱动系统设计指南
  • 告别Win10黑屏卡顿:深度排查Explorer.exe高CPU占用与启动失败的关联问题
  • 为什么92%的.NET开发者还在用同步推理?揭秘.NET 11新增System.AI命名空间与异步流式推理的5个关键转折点
  • PDF-XSS漏洞:从原理到实战的深度剖析
  • vue学习第二天-vue模板语法
  • 第七周结对编程
  • 基于BepInEx的炉石传说HsMod插件:55项功能深度解析与架构实现
  • 杰理之一拖八工具烧录介绍【篇】
  • 复旦微FM33FR0xx FL库GPIO实战:从点亮LED到按键中断,一个完整项目带你上手
  • SQL中如何获取所有列的数据:SELECT -星号用法与性能影响
  • ESP32-CAM发热严重还卡顿?可能是你的供电和代码没调对(附优化参数)
  • 【MATLAB代码介绍】三维环境下的IMM(交互式多模型),使用CV和CT模型,EKF作为滤波,目标高精度、自适应跟踪定位
  • StructBERT WebUI惊艳效果展示:三类典型句子对(同义/无关/相同)可视化对比
  • WindowsCleaner:从C盘爆红到系统焕新的智能管家
  • Hyper-V在Win11家庭版上的隐藏安装法:5分钟搞定虚拟机平台
  • 孩子作业拖拉没兴趣?3个高性价比督学平台,家长再也不用吼 - 品牌测评鉴赏家
  • Docker 27集群调度失效诊断手册(27个真实故障快照+根因图谱)
  • Bilibili-Old终极指南:5分钟一键恢复B站经典界面
  • PCIe 6.0的Shared Flow Control到底怎么玩?用Credit Block解决Buffer管理难题
  • IoT安全实战:手把手教你用Wireshark检测RPL协议中的Hello-Flood攻击
  • 魔兽争霸3终极优化方案:用WarcraftHelper解决现代系统兼容性问题
  • STM32F407点灯后,你的GPIO配置真的最优吗?聊聊输出模式与速度的选择
  • 高端玻璃熔窑温度场控制系统功率MOSFET选型方案——高耐压、高可靠与精准驱动系统设计指南
  • 孩子偏科厌学别发愁!这些神器来“救场” - 品牌测评鉴赏家
  • “容器一上线,OPC UA断连”——27个典型工业协议栈容器化故障根因分析(附可直接导入的sysctl.d策略包)
  • Upload-Labs第三关踩坑记:PHPStudy 8.1下修改httpd.conf为何不生效?原来是TS/NTS版本在作祟