快速开始

Sy_ Lv6

一、介绍

MongoDb是文档存储结构的数据库,与传统的SQL数据库有所不同。这是一开始学习Mongodb给我的印象。

传统的Sql数据库中有数据库、表、记录这三个层次的概念,映射到MongoDb中:数据库就是一个Connection连接,表则是一个Collection集合,集合或者说表中的每一个记录在Mongodb中叫做一个个的文档。

初步学习下来,Mongodb的集合像是一个存储Json格式的容器,似乎非常贴合web请求的Json格式,让前端开发者旋转。

二、开始Mongo

2.1 添加文档/创建集合

下载部署完成 Mongodb 后,可以通过如下命令来创建一个集合:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
db.postCollection.insertOne({
title: "mongodb 入门教程",
author: {
name: "Sy",
avatar: "https://shenying.online"
},
createdAt: "2025-3-25",
content: "Mongodb 是文档存储结构的数据库",
comments: [
{
user: "小明",
comment: "真不错"
},
{
user: "toby",
comment: "wow!"
}
]
})

这里的postCollection是我们当前创建的集合的名字,相当于在sql中创建了一张名为postCollection的表。

实际上,insertOne是用来在集合中添加文档数据的,但是因为没有该集合,所以mongoDb会自动创建这个名字的集合并插入数据,完成API的功能。

你也可以用同样的方式创建一张学生表(在mongodb中尽量叫他集合,下面也是如此):

1
db.Students.insertOne({内容省略...})

2.2 查询集合数据

  1. 查询集合的全部文档

要查询集合的所有元素可以使用db.集合名.find({})方法,不传递空对象则默认传递空对象,效果为查询集合的所有文档。

  1. 带条件的集合文档查询

以一张学生表为例,假设每一个学生文档有如下属性:nameagesex,如果要查询满足姓名为sy的学生,可以这样查:

1
db.Students.find({name: 'sy'})

注意这里的Students是学生集合的名字。

  1. 查询嵌套的文档结构:

假如文档的结构是这样的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{
title: "mongodb 入门教程",
author: {
name: "Sy",
avatar: "https://shenying.online"
},
createdAt: "2025-3-25",
content: "Mongodb 是文档存储结构的数据库",
comments: [
{
user: "小明",
comment: "真不错"
},
{
user: "toby",
comment: "wow!"
}
]
}

想要按照这里author.name这个二级属性来进行条件查询就需要这样写:

1
db.postCollection.find({"author.name": "Sy"})

注意这里的传递键名需要用双引号包裹,有所不同。

2.3 更新集合数据

更新数据和查询数据语法类似,存在两中方法:

  • updateOne() 仅修改一条数据
  • updateMany() 修改所有满足查询条件数据

他们都接受两个参数,依次是:1. 查询修改的条件 2. 要修改的属性

直接用之前的修改方法会出现报错:

1
db.user.updateOne({name: "Sy"}, {name: "谌y"})

image-20250325212710634

从这里可以得知,MongoDb中修改数据需要专门的操作符语法。

  1. $set

在修改的属性参数最外层再包一层大括号,并将$set键所对应的值设置为{name: "Syyyy", age: 19...}表示要修改$set所对应的所有属性。

1
db.user.updateMany({}, {$set: {name: 'kkk'}})

如果不这样做,Mongodb 就无法保证唯一性,请问你是只修改name还是要将这个文档修改为{ name: xxx }并舍去其他的键呢?

2.3 删除集合数据

与更新类似,删除数据根据数量也有两种写法:

  • deleteOne() 删除一条数据
  • deleteMany() 删除所有满足查询条件数据

语法很简单:

1
db.user.delete({ _id: ObjectId('67e2ae7c7da85b2443b61a2a') })

这里的_idMongoDb在创建文档时自动为我们生成的唯一标识,帮我们省去了自己后端使用雪花算法、uuid生成标识的时间。

三、总结

经过一番使用,可以看出MongoDb有一些比较特别的地方。

首先是性能方面,MongoDb适用于性能要求很高但是数据一致性要求不高的应用中。因为创建集合、数据分片过于方便,这样会导致很多数据不会保持相同的文档结构。

因为其操作语法和JavaScript非常接近,所以用 JS 创建的应用可以首选 MongoDb 作为数据库存储引擎。

  • 标题: 快速开始
  • 作者: Sy_
  • 创建于 : 2025-06-15 00:51:35
  • 更新于 : 2025-06-15 00:51:35
  • 链接: https://shenying.online//demo/0vwlcvyr/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论