快速开始

一、介绍
MongoDb
是文档存储结构的数据库,与传统的SQL数据库有所不同。这是一开始学习Mongodb
给我的印象。
传统的Sql数据库中有数据库、表、记录这三个层次的概念,映射到MongoDb
中:数据库就是一个Connection
连接,表则是一个Collection
集合,集合或者说表中的每一个记录在Mongodb
中叫做一个个的文档。
初步学习下来,Mongodb
的集合像是一个存储Json
格式的容器,似乎非常贴合web请求的Json
格式,让前端开发者旋转。
二、开始Mongo
2.1 添加文档/创建集合
下载部署完成 Mongodb
后,可以通过如下命令来创建一个集合:
1 | db.postCollection.insertOne({ |
这里的postCollection
是我们当前创建的集合的名字,相当于在sql
中创建了一张名为postCollection
的表。
实际上,
insertOne
是用来在集合中添加文档数据的,但是因为没有该集合,所以mongoDb
会自动创建这个名字的集合并插入数据,完成API的功能。
你也可以用同样的方式创建一张学生表(在mongodb
中尽量叫他集合,下面也是如此):
1 | db.Students.insertOne({内容省略...}) |
2.2 查询集合数据
- 查询集合的全部文档
要查询集合的所有元素可以使用db.集合名.find({})
方法,不传递空对象则默认传递空对象,效果为查询集合的所有文档。
- 带条件的集合文档查询
以一张学生表为例,假设每一个学生文档有如下属性:name
,age
,sex
,如果要查询满足姓名为sy
的学生,可以这样查:
1 | db.Students.find({name: 'sy'}) |
注意这里的Students
是学生集合的名字。
- 查询嵌套的文档结构:
假如文档的结构是这样的:
1 | { |
想要按照这里author.name
这个二级属性来进行条件查询就需要这样写:
1 | db.postCollection.find({"author.name": "Sy"}) |
注意这里的传递键名需要用双引号包裹,有所不同。
2.3 更新集合数据
更新数据和查询数据语法类似,存在两中方法:
updateOne()
仅修改一条数据updateMany()
修改所有满足查询条件数据
他们都接受两个参数,依次是:1. 查询修改的条件 2. 要修改的属性
直接用之前的修改方法会出现报错:
1 | db.user.updateOne({name: "Sy"}, {name: "谌y"}) |
从这里可以得知,MongoDb中修改数据需要专门的操作符语法。
$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') }) |
这里的_id
是MongoDb
在创建文档时自动为我们生成的唯一标识,帮我们省去了自己后端使用雪花算法、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 进行许可。