mongodb 第一讲

MongoDB是基于文档的NoSql分布式数据库,以其NoSchema特性著称,允许动态添加字段并支持BSON格式。NoSchema提供了强大的数据结构表达能力和便捷的开发迭代,但同时也引入了Validation来允许指定字段类型和取值范围,确保数据一致性。文章通过示例展示了如何创建带验证规则的集合。
摘要由CSDN通过智能技术生成

第一章 mongodb 基础知识


前言

从DB-Engines 网站来看,mongodb 历年得分数据呈现持续增长的趋势,最两年来看总排名在前5名左右,从如下图所示:
在这里插入图片描述
!](https://img-blog.csdnimg.cn/786efedcab3440ea9bcd78527039b1ce.png#pic_center)

在这里插入图片描述


一、mongodb是什么?

mongodb 是一款基于文档的 NoSql的分布式文档数据库,在高性能、动态扩缩容、高可用、易部署、易使用、海量数据存储、高压缩比等方面拥有天然优势。虽然 mongodb 有很多优势,但是在国内缺存在不少的误解,影响力有待提升。

二、基础知识

MongoDB 的核心特性是:No Schema、高可用、分布式(可平行扩展),另外 MongoDB 自带数据压缩功能,使得同样的数据存储所需的资源更少。本节将会依次介绍这些特性的基本知识,以及 MongoDB 是如何实现这些能力的。

1.No Schema

MongoDB 是NoSQL文档型数据库,其文档是由 BSON(Binary Serialized Document Format) 是类 JSON 的二进制存储格式组成的,访问方式和数据结构完全和 JSON 一样。支持动态的添加字段、支持内嵌对象和数组对象,同时它也对 JSON 做了一些扩充,如支持 Date 和 BinData 数据类型。正是 BSON 这种字段灵活管理能力赋予了 Mongo 的 No Schema 或者 Schema Free 的特性。

No Schema 特性带来的好处包括:

  • 强大的数据结构表现能力:对象嵌套和数组结构可以让数据库中的对象具备更高的表现能力,能够用更少的数据对象表现复杂的领域模型对象。
  • 便于开发和快速迭代:灵活的字段管理,使得项目迭代新增字段非常容易
  • 降低运维成本:数据对象结构变更不需要执行 DDL 语句,降低 Online 环境的数据库操作风险,特别是在海量数据分库分表场景。

MongoDB 在提供 No Schema 特性基础上,提供了部分可选的 Schema 特性:Validation。其主要功能有包括:

  • 规定某个 Document 对象必须包含某些字段
  • 规定 Document 某个字段的数据类型
  • 规定 Document 某个字段的取值范围:可以是枚举 i n 或者正则 in或者正则 in或者正则regex

下面可以通过以下例子举例说明:

db.createCollection("saky_test_validation",{validator:
  {
    $and:[
      {name:{$type: "string"}},
      {status:{$in:["INIT","DEL"]}}]
  }
})

db.createCollection("saky_test_validation", {
   validator: {
      $jsonSchema: {
         bsonType: "object",
         required: [ "name", "status", ],
         properties: {
            name: {
               bsonType: "string",
               description: "must be a string and is required"
            },
            status: {

               enum: [ "INIT", "DEL"],

               description: "can only be one of the enum values and is required"
           }
} }})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进击的goer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值