MongoDB自学笔记(一)

一、MongoDB简介

MongoDB是一款基于C++开发的文档型数据库。与传统的关系型数据库有所不同,MongoDB面向的是文档,所谓的文档是一种名为BSON (Binary JSON:二进制JSON格式)是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似jsonbson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
笔者用的是最新的Mongo7.0,客户端工具则使用的是Navicat。

二、MongoDB和MySQL的区别

这里直接引用知乎上的一篇文章,个人感觉写的比较清楚。https://zhuanlan.zhihu.com/p/689412013

三、基本概念

1、数据库:DB

指的就是Mongo的一个实例和MySQL中的数据库接本一致,用于保存一个活动多个集合。

2、集合:Collection

集合是Mongo中的概念,对应到MySQL中就是一张表,例如 user表、order表等

3、文档:Document

Mongo是面向文档的数据库,文档是Mongo中最基本的数据单位,对应到MySQL中就是某张表里的一条数据。

4、索引:Index

索引是一种用于加快查询的数据结构,这一点和MySQL中类似。但是也有一定的区别,Mongo中的索引数据结构是B树,而MySQL中默认是B+树

5、小结

Mongodb Mysql
DB 数据库 DB数据库
集合Collection 某一张表
文档Document 某一条数据
索引Index 索引

四、基本操作

1、使用某个数据库

在这里我们有一个名为test的数据库,如果我们想要使用该数据库,可以使用命令 use
image.png
我们在客户端工具(这里笔者用的是Navicat)使用命令 use test,结果如下:image.png

2、集合

2.1、创建集合

创建集合对应到MySQL中就是创建一张表,集合就是我们用于保存文档的地方。创建集合的命令如下
db.createCollection(, )
name:集合的名称
options:可选项
完整的格式如下:

db.createCollection( <name>,
    {
      capped: <boolean>,
      timeseries: {                  // Added in MongoDB 5.0
         timeField: <string>,        // required for time series collections
         metaField: <string>,
         granularity: <string>,
         bucketMaxSpanSeconds: <number>,  // Added in MongoDB 6.3
         bucketRoundingSeconds: <number>  // Added in MongoDB 6.3
      },
      expireAfterSeconds: <number>,
      clusteredIndex: <document>,  // Added in MongoDB 5.3
      changeStreamPreAndPostImages: <document>,  // Added in MongoDB 6.0
      size: <number>,
      max: <number>,
      storageEngine: <document>,
      validator: <document>,
      validationLevel: <string>,
      validationAction: <string>,
      indexOptionDefaults: <document>,
      viewOn: <string>,
      pipeline: <pipeline>,
      collation: <document>,
      writeConcern: <document>
    }
  )

参数解释:由于篇幅限制这里不赘述,直接引用官网的内容
db.createCollection()

实操:创建一个名为learnMongo的集合

方式一:使用db.createCollectoin命令:db.createCollection(“learnMongo”)
结果:
image.png

方式二:直接插入文档,如果对应的集合不存在Mongo会自动帮我们创建集合
例如:db.learnUseMongo.insert({“name”:“hardy”,“age”:29,“gender”:“male”})
结果:WriteResult({ “nInserted” : 1, “writeConcernError” : [ ] }) 从结果中可以看出插入了一条文档
image.png
同时当前集合中也存在一条我们刚刚插入的数据
image.png

2.1、查询集合

正如我们在MySQL中想查看当前数据库有多少表一样,Mongo中也可以查看当前数据库中有多少个集合。
1、查询所有集合的名称:db.getCollectionNames()
image.png
2、查询指定名称的集合
image.png

2.2、删除集合

例如我们要删除名为learnMongo的集合
语法 db..drop()
image.png

3、文档

文档是是MongoDB中的数据载体,是一种类似JSON格式的数据,在MongoDB中称之为BSON(Binary JSON),既然是一种类似JSON的格式,所以 BSON也是 key-value形式的,形如

image.png

3.1、创建文档

在上一节中我们创建了集合(相当于是Mysql中的表),有了集合接下来我们就可以往集合里插入数据。插入数据的语法:db..insert(,)
参数:

参数 类型 说明
collection 字符串 要插入的集合,如果不存在则会自动创建
document 文档或数组 要插入到集合中的文档或文档数组。
writeConcern 文档 可选。表达写关注的文档。省略以使用默认的写关注。请参阅写关注
如果是在事务中运行,则请勿显式设置此操作的写关注。要将写关注与事务一起使用,请参阅事务和写关注。
ordered 布尔 可选。如果为 true,则对数组中的文档执行有序插入,如果其中一个文档发生错误,MongoDB 将返回,而不处理数组中的其余文档。
如果为 false,则执行无序插入,如果其中一个文档发生错误,则继续处理数组中的其余文档。
默认值为 true

示例:

db.users.insert({
    name: {
        first: "Alan",
        last: "Turing"
    },
    birth: new Date('Jun 23, 1912'),
    death: new Date('Jun 07, 1954'),
    contribs: ["Turing machine", "Turing test", "Turingery"],
    views: NumberLong(1250000)
})



结果:
image.png
image.png

与之类似的还有 db..insertOne(,)以及db..insertMany(,)。用法与上述基本一致,这里不在赘述。

由于篇幅限制,先写到这里希望对你有所帮助。

未完待续

相关推荐

  1. MongoDB学习笔记

    2024-07-16 11:44:02       37 阅读
  2. MongoDB使用笔记

    2024-07-16 11:44:02       34 阅读
  3. MongoDB学习笔记

    2024-07-16 11:44:02       27 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-16 11:44:02       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-16 11:44:02       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-16 11:44:02       58 阅读
  4. Python语言-面向对象

    2024-07-16 11:44:02       69 阅读

热门阅读

  1. R语言学习笔记7-列表

    2024-07-16 11:44:02       28 阅读
  2. 【设计模式】策略模式你真的掌握了吗?

    2024-07-16 11:44:02       25 阅读
  3. 奇奇怪怪构造思维题列表

    2024-07-16 11:44:02       28 阅读
  4. validator参数校验

    2024-07-16 11:44:02       21 阅读
  5. 【力扣C语言】每日一题

    2024-07-16 11:44:02       19 阅读