首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

mongodb 3.2文档验证不允许额外的字段

MongoDB 3.2的文档验证是指在插入或更新文档时,对文档的结构和内容进行验证的功能。它可以确保文档符合预定义的模式,并且不允许包含额外的字段。

具体来说,文档验证可以通过定义验证规则来实现。验证规则是一个JSON对象,可以包含以下属性:

  1. $jsonSchema: 用于定义文档的结构和内容的JSON Schema。JSON Schema是一种用于描述JSON数据结构的语言,可以定义字段的类型、格式、约束条件等。通过使用JSON Schema,可以确保文档的结构和内容满足预期的要求。

下面是一个示例的验证规则,用于验证一个名为"users"的集合中的文档:

代码语言:json
复制
{
  $jsonSchema: {
    bsonType: "object",
    required: ["name", "age"],
    properties: {
      name: {
        bsonType: "string",
        description: "must be a string and is required"
      },
      age: {
        bsonType: "int",
        minimum: 18,
        description: "must be an integer greater than or equal to 18"
      }
    }
  }
}

在上面的示例中,验证规则要求文档必须是一个对象,并且必须包含"name"和"age"字段。其中,"name"字段的类型必须是字符串,"age"字段的类型必须是整数,并且大于等于18。

当使用文档验证功能时,如果插入或更新的文档不符合验证规则,MongoDB将会抛出一个错误,阻止操作的执行。

对于MongoDB 3.2,腾讯云提供了云数据库MongoDB(TencentDB for MongoDB)产品,它是一种托管的MongoDB数据库服务。您可以通过腾讯云控制台或API来创建和管理MongoDB实例,并且可以在实例级别启用文档验证功能。您可以参考腾讯云官方文档来了解更多关于云数据库MongoDB的信息和使用方法。

腾讯云数据库MongoDB产品介绍链接地址:https://cloud.tencent.com/product/mongodb

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

最佳实践| 一文读懂《MongoDB 使用规范及最佳实践》原理

:00 ---- 一、MongoDB 使用规范与限制 MongoDB 灵活文档优势 灵活库/集合命名及字段增减 同一字段可存储不同类型数据 Json 文档可多层次嵌套文档 对于开发而言最自然表达...MongoDB 灵活文档烦恼 数据库集合字段名千奇百怪 同一字段数据类型各不一样 业务异常可能写入“脏”数据 1.1 库命名规范 不能为空字符串 "" 不能以 $ 开头 不能包含 ....key 或 _id  分片 key 及其值不允许修改( 4.2 版本前不允许修改 key 值,4.4 版本前不许变更 key 字段) 虽然 4.2 版本可以修改分片 key 值,4.4 版本可以调整分片...MongoDB 3.2 开始在创建集合时候提供了 validator 选项来规范插入和更新数据规则 为了增强 3.2 版本 validator 功能 MongoDB 3.6 提供了 JSON Schema...warn:日志打印告警提示但接受文档 Validation 使用限制   不允许在 local、admin 及 config 等系统库中集合创建具有校验规则集合 不允许对 system.* 等系统集合创建校验规则

2.4K50
  • MongoDB

    MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。 ?.../mongo/bin/mongod --dbpath=/data/db --logpath=/Apps/mongo/logs/mongodb.log   6.客户端连接验证 # /Apps/mongo...主要由:文档(document)、集合(collection)、数据库(database)这三部分组成。逻辑结构是面向用户,用户使用 MongoDB 开发应用程序使用就是逻辑结构。     ...数据库类似于mysql数据库,集合collection类似于mysql表,文档document类似于表中一行记录。 ?...3.2数据存储结构 MongoDB 内部有预分配空间机制,每个预分配文件都用 0 进行填充,由于有了这个机制, MongoDB 始终保持额外空间和空余数据文件,从而有效避免了由于数据暴增而带来磁盘压力过大问题

    1.4K40

    【翻译】MongoDB指南引言

    3.2集合 MongoDB 在集合中存储文档,集合类似于关系数据库中表。...可以为创建集合指定参数,例如设置集合大小或者文档验证规则,如果不需要指定这些参数,那么没必要显示地创建一个集合。...文档验证3.2版新特性) 默认情况下,一个集合中文档不必具有相同结构 , 一个集中文档不需要具有一系列相同字段,并且不同文档字段数据类型可以不同。...文档大小(3.2版本变更) 如果更新或替换操作改变了文档大小,则操作失败。 删除文档 不能删除固定集合中文档,可使用drop() 命令删除整个固定集合并新建之。 分片 固定集合不允许分片。...在指定一段时间后自动移除数据 对于数据过期情形,为支持额外灵活性,可使用MongoDBTTL索引。

    4.2K60

    一文快速入门MongoDB数据库

    至此 MongoDB 就安装完成了。 验证安装 您可以使用mongod -version命令来验证 MongoDB 是否安装成功,如果出现类似下面所示内容,则说明 MongoDB 安装成功。...3.4 MongoDB更新操作 更新操作,又称修改操作,完成从集合中更新(修改)文档MongoDB提供了以下更新集合文档方法: db.collection.updateOne() //3.2版中新功能...更新一条文档记录 db.collection.updateMany() //3.2版中新功能 更新多条文档记录 db.collection.replaceOne() //3.2版中新功能 替换集合中一个文档...{$set:{"name":"bigsai2"}}//修改值 ) 其中{“age”:“22”}为查询条件即找到第一条数据字段age为22文档,而{$set:{}}则用来修改文档对应数据字段值...3.5 MongoDB删除操作 删除操作完成从集合中删除文档MongoDB提供了以下删除集合文档方法: db.collection.deleteOne() //3.2版中新功能 删除一条记录

    1.2K30

    一文快速入门MongoDB数据库

    至此 MongoDB 就安装完成了。 验证安装 您可以使用mongod -version命令来验证 MongoDB 是否安装成功,如果出现类似下面所示内容,则说明 MongoDB 安装成功。...3.4 MongoDB更新操作 更新操作,又称修改操作,完成从集合中更新(修改)文档MongoDB提供了以下更新集合文档方法: db.collection.updateOne() //3.2版中新功能...更新一条文档记录 db.collection.updateMany() //3.2版中新功能 更新多条文档记录 db.collection.replaceOne() //3.2版中新功能 替换集合中一个文档...{$set:{"name":"bigsai2"}}//修改值 ) 其中{“age”:“22”}为查询条件即找到第一条数据字段age为22文档,而{$set:{}}则用来修改文档对应数据字段值...3.5 MongoDB删除操作 删除操作完成从集合中删除文档MongoDB提供了以下删除集合文档方法: db.collection.deleteOne() //3.2版中新功能 删除一条记录

    80620

    MongoDB(4)- Collection 集合相关

    Collection MongoDB文档存储在集合中 集合存储在 Database 中 集合类似于关系数据库(Mysql)中表 如果集合不存在,则 MongoDB 会在第一次存储该集合数据时创建该集合...如果 capped 为 true,那么还需要指定次字段值 max 数字 (可选)指定上限集合中允许最大文档数 注意:在插入文档时,MongoDB 首先检查上限集合 capped 字段,然后检查 max...字段 隐式创建 上面的 createCollection 方法,如果不需要指定 options 时候,就没必要用显示创建 因为 MongoDB 会在集合首次存储数据时自动创建新集合 db.myDB.insert...( {"name": "tom"} ) 文档验证 默认情况下,集合不要求存储所有文档具有相同数据结构 即单个集合中不同文档不需要具有相同字段集 并且一个字段数据类型可以在集合内文档中不同 总结...: Bson 数据结构、字段都不需要必须一致 从 MongoDB 3.2 开始,可以在 update 和 insert 操作期间为集合强制执行文档验证规则(后面再展开讲) 修改文档数据结构 如果要改集合中文档结构

    79510

    常见问题:MongoDB基础知识

    [1] 如果要指定特定集合选项,你也可以明确使用db.createCollection来创建一个集合,例如指定最大大小或文档验证规则。 如何定义或修改集合模式(schema)?...在MongoDB中您不需要为集合指定模式。虽然集合中文档通常具有基本上同质结构,但这不是必需; 即,单个集合中文档不需要具有一组相同字段字段数据类型也可以在集合中文档之间存在不同。...要更改集合中文档结构,请将文档更新为新结构。例如,添加新字段,删除现有字段或将字段值更新为新类型。...在3.2版中更改:但是,从MongoDB 3.2开始,您可以在更新和插入操作期间强制执行集合文档验证规则。 某些集合属性(例如指定最大大小)可以在显式创建集合期间指定并进行修改。...可以在单个操作中写入一个或多个字段,包括对多个子文档和数组元素更新。MongoDB提供保证确保文档更新是完全隔离; 任何错误都会导致操作回滚,以便客户端收到文档一致视图。

    1.9K10

    数据库MongoDB-索引

    部分索引是只针对符合某个特定条件文档建立索引,3.2版本才支持该特性。...索引会跳过缺少索引字段任何文档。索引是“稀疏”,因为它不包含集合所有文档。相反,非稀疏索引包含集合中所有文档,为那些不包含索引字段文档存储空值。...语法格式:db.COLLECTION_NAME.createIndex({索引键名:排序规则},{sparse:true}) 注意:从MongoDB 3.2开始,MongoDB提供了创建部分索引选项...部分索引提供了稀疏索引功能超集。如果您使用MongoDB 3.2或更高版本,则部分索引应优先于稀疏索引。...覆盖索引查询 官方MongoDB文档中说明,覆盖查询是以下查询: 所有的查询字段是索引一部分 所有的查询返回字段在同一个索引中 由于所有出现在查询中字段是索引一部分, MongoDB 无需在整个数据文档中检索匹配查询条件和返回使用相同索引

    6.1K40

    MongoDB 索引

    MongoDB 索引类型 MongoDB 索引类型包括,单字段索引,复合索引,多Key索引,文本索引等。...单字段索引 db.emp_res.createIndex({name:1}) // 升序排列 复合索引 复合索引针对是多个字段联合建立索引,先按照第一个字段排序,第一个字段相同文档按照第二个字段排序...runnning"]} db.person.createIndex( {habbit: 1} ) // 自动创建多key索引 db.person.find( {habbit: "football"} 索引额外属性...唯一索引:保证索引对应字段不会出现相同值,_id索引就是唯一索引 TTL索引:可以针对某个时间段,指定文档过期时间 部分索引:只针对符合某个特定条件文档建立索引。...3.2版本后支持 稀疏索引:只针对存在索引字段文档建立索引,可看做是部分索引一种特殊情况。

    71131

    mongoDB 文档更新

    mongoDB对于文档更新,既可以实现文档更新,也可以实现文档随意增减键(列),这是与传统关系型数据库最大不同之处,也就是所谓无模式带来一定程度上便利。...即mongoDB支持文档更新,也支持文档替换。本文给出了mongoDB更新语法及示例。...: } ) 更新相关事项 mongoDB中所有写操作是基于单个文档基本原子性操作(3.2版本后)..., //更新内容为favorites.artist值为Pisanello,type值为3,且增加或修改lastModified字段 > db.users.updateMany(...文档更新有很多个不同方法,传统update,以及3.2版本之后updateOne,updateMany 2、mongoDB文档替换也有很多个不通方法,传统update,以及3.2版本之后

    1.7K20

    Spring认证中国教育管理中心-Spring Data MongoDB教程五

    请注意,这两个可选标志已在 MongoDB 3.2 中引入,除非明确设置,否则不会包含在查询中。...当 MongoDB 在第一次交互时自动创建集合时,将不会使用带注释排序规则。这将需要额外商店交互延迟整个过程。...JSON 架构 从 version 3.6 开始,MongoDB 支持根据提供JSON Schema验证文档集合。...模式是模式对象本身,它可以包含描述属性和子文档嵌入模式对象。 required是描述文档中需要哪些属性属性。它可以与其他模式约束一起选择指定。请参阅有关可用关键字MongoDB 文档。...在这里,它是一个基于字符串properties元素,用于声明可能字段值。 address是为其postCode字段值定义架构文档

    2.6K20

    MongoDB基础

    字段值可以包含其他文档,数组及文档数组。在nosql数据库里,大部分查询都是键值对(key、value)方式。...灵活数据模型:相对于关系数据库里,增删字段繁琐,NoSQL无需事先为要存储数据建立字段,随时可以存储自定义数据格式。 高可用:NoSQL在不太影响性能情况,就可以方便实现高可用架构。...文档存储 MongoDBCouchDB 文档存储一般用类似json格式存储,存储内容是文档。这样也就有有机会对某些字段建立索引,实现关系数据库某些功能。...在MongoDB中集合用collections表示,每个 collection用一个名字标识,需要注意以下几点: 名字不允许是空字符串"" 名字不能包含\0字符,因为它表示名字结束 不能创建以system...MongoDB,创建服务器进程 --auth # 启用验证 --cpu # 定期显示CPUCPU利用率和iowait --dbpath arg # 指定数据库路径 --diaglog arg # diaglog

    1.6K60

    MongoDB基础之入门

    3.文件限制 最大BSON文档大小为16M。过大文档MongoDB提供了GridFS进行存储。 MongoDB在写操作之后保留文档字段顺序,_id字段始终是文档第一个字段。...更改字段名称可能会导致文档字段顺序重新排序。 2.6版本开始MongoDB主动保留文档字段顺序,2.6之前MongoDB没有主动保留文档字段顺序。 4...._id 在MongoDB中,存储在集合中每个文档都需要一个唯一_id字段作为主键。如果插入文档省略了该_id字段MongoDB驱动程序会自动为该字段生成ObjectId类型作为其值。...MongoDB3.2版本开始加入了更新和插入操作期间强制执行集合文档验证规则。 2.集合命名 集合命名有以下几点要求: 1.集合名称应以下划线或字母字符开头。 2.集合名不能是空字符串。...users集合以及tutorial库,同时还给此文档添加了一个额外键“_id”。

    1.1K10

    MongoDB基础之入门

    3.文件限制 最大BSON文档大小为16M。过大文档MongoDB提供了GridFS进行存储。 MongoDB在写操作之后保留文档字段顺序,_id字段始终是文档第一个字段。...更改字段名称可能会导致文档字段顺序重新排序。 2.6版本开始MongoDB主动保留文档字段顺序,2.6之前MongoDB没有主动保留文档字段顺序。 4...._id 在MongoDB中,存储在集合中每个文档都需要一个唯一_id字段作为主键。如果插入文档省略了该_id字段MongoDB驱动程序会自动为该字段生成ObjectId类型作为其值。...MongoDB3.2版本开始加入了更新和插入操作期间强制执行集合文档验证规则。 2.集合命名 集合命名有以下几点要求: 1.集合名称应以下划线或字母字符开头。 2.集合名不能是空字符串。...users集合以及tutorial库,同时还给此文档添加了一个额外键“_id”。

    97030
    领券