首页
学习
活动
专区
工具
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指南引言

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

    4.3K60

    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数据库

    至此 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版中的新功能 删除一条记录

    81120

    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 操作期间为集合强制执行文档验证规则(后面再展开讲) 修改文档数据结构 如果要改集合中文档的结构

    80510

    常见问题: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版本后支持 稀疏索引:只针对存在索引字段的文档建立索引,可看做是部分索引的一种特殊情况。

    71431

    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基础之入门

    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”。

    97730

    MongoDB基础

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

    1.6K60

    MongoDB 单键(列)索引

    MongoDB支持基于集合文档上任意列创建索引。缺省情况下,所有的文档的_id列上都存在一个索引。基于业务的需要,可以基于一些重要的查询和操作来创建一些额外的索引。...一、创建语法 语法:db.collection.createIndex(keys, options) keys: 一个包含字段和值键值对的文档,指定该键即在该键上创建索引...从3.2版本之后,MongoDB支持部分索引,部分索引是间隙索引的超集 如果使用MongoDB,建议优先使用部分索引...//MongoDB支持在内嵌文档上列上创建单列索引,创建方法与文档上单列创建方法类似。...//在内嵌文档列上的创建,可以使用"." 方式来创建。即内嵌文档列.成员名的方法。 //在内嵌文档中使用索引进行等值匹配,其字段的顺序应该实现精确配置。

    1K40
    领券