详解MongoDB的validate_collection()函数:验证集合是否有效

yizhihongxing

MongoDB是一种文档导向的数据库,它以JSON(JavaScript对象表示法)的格式存储数据。在存储之前,需要定义数据结构和数据验证规则。MongoDB提供了validate_collection()函数,用于检测集合中的文档是否符合指定的验证规则。

函数作用

validate_collection()函数用于验证集合中的每个文档是否符合指定的验证规则。如果某个文档不符合规则,则会显示包含错误信息的结果。如果所有文档符合规则,则返回null值。

使用方法

使用validate_collection()函数需要满足以下条件:
* MongoDB版本>= 3.2
* 需要定义一个具体的文档验证规则(validation rule)。

定义文档验证规则:
验证规则必须包含在create方法中,该方法会在创建集合的同时定义验证规则。

db.createCollection("users", 
   { validator: { $jsonSchema: {
               bsonType : "object",
               required : [ "username", "password" ],
               properties : {
                  username : {
                     bsonType : "string",
                     description : "must be a string and is required"
                  },
                  password : {
                     bsonType : "string",
                     description : "must be a string and is required"
                  }
               }
            } },
       validationLevel: "strict",
       validationAction: "error"
   }
)

在集合中添加文档:

db.users.insert({"username": "tina", "password": "123456"})
db.users.insert({"username": "judy", "password": 123456})

调用validate_collection()函数进行验证:

db.runCommand({validate: "users"})

输出结果:

{
   "ok" : 1,
   "result" : {
       "valid" : true,
       "errors" : [ ]
   }
}

上述输出结果表明,集合中的文档符合定义的验证规则。

示例

下面提供一个更具体的实例:

定义验证规则:
按照上述格式,我们定义一个验证用户账号和密码是否符合要求的文档验证规则,其中,账号必须是字符串类型,长度在1-20之间;密码长度在6-16之间。具体的验证规则如下面代码所示。

db.createCollection("users", 
   { validator: { $jsonSchema: {
               bsonType : "object",
               required : [ "username", "password" ],
               properties : {
                  username : {
                     bsonType : "string",
                     description : "must be a string and is required",
                     minLength: 1,
                     maxLength: 20
                  },
                  password : {
                     bsonType : "string",
                     description : "must be a string and is required",
                     minLength: 6,
                     maxLength: 16
                  }
               }
            } },
       validationLevel: "strict",
       validationAction: "error"
   }
)

在集合中添加文档:

db.users.insert({"username": "t", "password": "123"})
db.users.insert({"username": "test1234567890123456789", "password": "12345"})
db.users.insert({"username": "tina", "password": 1234567})

调用validate_collection()函数进行验证:

db.runCommand({validate: "users"})

输出结果:

{
   "ok" : 1,
   "result" : {
       "valid" : false,
       "errors" : [
           {
               "category" : "validator",
               "code" : 121,
               "message" : "Document failed validation",
               "details" : {
                   "validator" : {
                       "$jsonSchema" : {
                           "bsonType" : "object",
                           "required" : [
                               "username",
                               "password"
                           ],
                           "properties" : {
                               "username" : {
                                   "bsonType" : "string",
                                   "description" : "must be a string and is required",
                                   "minLength" : 1,
                                   "maxLength" : 20
                               },
                               "password" : {
                                   "bsonType" : "string",
                                   "description" : "must be a string and is required",
                                   "minLength" : 6,
                                   "maxLength" : 16
                               }
                           }
                       }
                   },
                   "schema" : {
                       "username" : "string",
                       "password" : "string"
                   },
                   "uri" : "mongodb://localhost:27017/test.users",
                   "bsonType" : "object",
                   "violations" : [
                       {
                           "field" : "username",
                           "message" : "minLength validation failed"
                       },
                       {
                           "field" : "password",
                           "message" : "maxLength validation failed"
                       },
                       {
                           "field" : "password",
                           "message" : "minLength validation failed"
                       },
                       {
                           "field" : "username",
                           "message" : "maxLength validation failed"
                       }
                   ]
               }
           }
       ]
   }
}

上述输出结果表明,集合中的第一和第二文档没有符合规则,出现了两个验证错误:账号长度不够和密码超过了最大长度。第三个记录符合验证规则。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解MongoDB的validate_collection()函数:验证集合是否有效 - Python技术站

(0)
上一篇 2023年3月23日
下一篇 2023年3月23日

相关文章

  • 详解MongoDB的message()函数:向 MongoDB 发送一个消息

    MongoDB是一个非关系型数据库系统,可以存储类似JSON格式的文档数据。在MongoDB中,message()函数是一种能够输出诊断信息在系统日志中的工具。下面详细介绍MongoDB message()函数的作用和使用方法: 1.作用 message()函数主要用于输出MongoDB系统的日志信息,用于收集和观察系统日志,以便于对MongoDB的性能和错…

    MongoDB函数大全 2023年3月23日
    00
  • 详解MongoDB的initialize_unordered_bulk_op()函数:初始化无序的批量操作

    初始化无序批量操作是一种将多个操作发送到 MongoDB 服务器以进行批量处理的方法,可以显著提高数据库的操作效率。initialize_unordered_bulk_op() 函数可以返回一个空的 BulkWriteOperation 对象,用于构造多个MongoDB操作(如插入、 删除和更新操作)并排列在一起进行发送到MongoDB服务器。 使用方法: …

    MongoDB函数大全 2023年3月23日
    00
  • 详解MongoDB的reset_index_cache()函数:重置索引缓存

    对不起,我发现我的回答有误,请允许我更正。MongoDB是一款非关系型数据库,它不支持reset_index_cache()函数。如果你有其他问题,我会尽力回答。

    MongoDB函数大全 2023年3月23日
    00
  • 详解MongoDB的get_indexes()函数:获取集合中的所有索引

    MongoDB getIndexes() 函数详解 1. getIndexes() 函数概述 getIndexes() 函数主要用于查询集合中索引的信息,包括索引名称、键值等。 该函数的语法如下所示: db.collection.getIndexes() 2. getIndexes() 函数使用方法 2.1 查询集合中所有索引 使用 getIndexes()…

    MongoDB函数大全 2023年3月23日
    00
  • 详解MongoDB的authenticate_mongo_cr()函数:使用 mongo-crypto 认证客户端

    MongoDB的authenticate_mongo_cr()函数详解 简介 authenticate_mongo_cr()是MongoDB客户端驱动程序中的一个方法,主要用于对MongoDB进行身份验证。 使用方法 在使用该方法之前,需要确保以下条件: 已经建立起与数据库的连接 该数据库开启了MongoDB经典身份验证机制 接下来,我们就可以使用该方法进行…

    MongoDB函数大全 2023年3月23日
    00
  • 详解MongoDB的replace_one()函数:替换集合中的一个文档

    MongoDB的replace_one()函数介绍 作用 replace_one()(替换)函数是 MongoDB 中用来修改指定文档的函数,它很像 update_one() 函数,但是其不是修改文档中的字段,而是完全替换整个文档。 通过使用replace_one()函数,可以实现对指定文档中的所有字段都进行修改而不只是某些字段,这在需要更改整个文档的场景中…

    MongoDB函数大全 2023年3月23日
    00
  • 详解MongoDB的set_password()函数:设置指定用户的密码

    MongoDB的set_password()函数是用于修改数据库用户的密码的函数。 函数作用 set_password()函数用于修改数据库用户的密码。 如果MongoDB已经启用了访问控制,则必须为用户设置密码才能使用其帐户。 函数用法 set_password()函数的使用方法如下: db.updateUser( "username"…

    MongoDB函数大全 2023年3月23日
    00
  • 详解MongoDB的set_read_preference()函数:设置读取首选项

    MongoDB的set_read_preference()函数的作用是设置读操作的偏好,主要用于在副本集环境中控制读操作的行为,可以指定读取数据时从哪个节点读取数据,以及是否可以读取过期数据等。 在使用set_read_preference()函数之前,需要先对MongoDB环境进行一些配置,包括创建集合、插入数据和启用副本集等操作。然后,在实例化Mongo…

    MongoDB函数大全 2023年3月23日
    00
合作推广
合作推广
分享本页
返回顶部