当前位置:首页 > 问答 > 正文

MongoDB刚开始学的话,这篇文章基本能帮你搞定大部分入门问题

综合自网络技术博客与MongoDB官方入门指南的通俗化解读)

咱们得弄明白MongoDB是个啥,你可以把它想象成一个超级灵活的大仓库,专门用来存放数据,和我们平时听说的那种用表格来存数据的数据库(比如MySQL)不同,MongoDB用的是一种叫做“文档”的格式,这个“文档”不是Word文档,而是一种类似JSON格式的数据结构,看起来就像是一堆键值对组合在一起,这种结构的好处是,非常贴近我们平时写代码时用的对象或者字典,所以对于开发人员来说,理解和使用起来会感觉特别自然。

举个例子你就明白了,比如我们要存一个用户的信息,在传统的表格数据库里,我们得先设计好一张表,有固定的列,比如姓名、年龄、地址,但如果这个用户的地址很复杂,有省、市、街道、门牌号,在表格里处理起来就有点麻烦,而在MongoDB里,我们直接存成一个文档就行了: { "name": "张三", "age": 30, "address": { "city": "北京", "street": "海淀区某某路", "postcode": "100000" } } 你看,地址信息可以直接作为一个嵌套的对象塞进去,非常自由,这种灵活性是MongoDB最大的优点之一,特别适合需求经常变动的项目。

MongoDB刚开始学的话,这篇文章基本能帮你搞定大部分入门问题

我们聊聊MongoDB里几个核心的概念,把它和你熟悉的东西做个对比,就一点都不难了:

  1. 数据库:这个好理解,就是最高级别的容器,相当于一个大的仓库本身,你可以创建多个数据库,用来存放不同项目的数据。
  2. 集合:相当于传统数据库里的“表”,但区别在于,集合里的文档不要求有统一的结构,也就是说,同一个集合里,一个文档可以有姓名、年龄字段,而另一个文档可以只有个昵称和邮箱,没人会报错,这给了你很大的自由度,但初期规划时也要注意别太乱。
  3. 文档:刚才说过了,就是一条具体的数据记录,相当于表格里的一行,它是MongoDB里最基本的数据单元。

好了,概念清楚了,那怎么用呢?你得先把它安装到你的电脑上,MongoDB的官网提供了详细的安装教程,根据你的操作系统(Windows、macOS或Linux)一步步来就行,安装好后,你需要启动MongoDB的服务,之后,你可以通过一个叫mongo的命令行工具(新版本可能是mongosh)来连接这个服务,并开始操作你的数据库。

MongoDB刚开始学的话,这篇文章基本能帮你搞定大部分入门问题

基本的操作无非就是“增删改查”这四个动作:

  • :就是往集合里插入新的文档,命令是db.集合名.insertOne()插入一条,或者insertMany()插入多条。db.users.insertOne({name: "李四", age: 25}),就在users集合里插了一条数据。
  • :这是最常用的操作,命令是find()db.users.find() 会查出users集合里所有文档,你还可以在里面加条件,db.users.find({age: {$gt: 20}}) 就是查找所有年龄大于20岁的用户,这个$gt就是一种查询操作符,MongoDB提供了很多这样的操作符来做复杂的查询。
  • :更新已有的文档,命令是updateOne()更新一条,或者updateMany()更新多条。db.users.updateOne({name: "李四"}, {$set: {age: 26}}) 就把李四的年龄改成了26,这里的$set也是一个操作符,表示设置某个字段的值。
  • :删除文档,命令是deleteOne()deleteMany(),用法和查找类似,指定条件就行了。db.users.deleteOne({name: "李四"}) 就删除了名为李四的那条文档。删除要特别小心,数据没了可就真没了。

除了这些,还有一个很重要的概念叫“索引”,你可以把索引理解为书本最后的目录,如果没有目录,你想找某个知识点就得一页一页翻,非常慢,数据库也一样,如果没有索引,每次查询它都得扫描整个集合,数据量大了就会很慢,给经常用来查询的字段(比如用户的ID、手机号)创建索引,能极大提高查询速度,命令大概是 db.集合名.createIndex({字段名: 1})

作为入门,你还需要知道MongoDB的一些特点,它很适合用来处理海量数据,而且可以通过一种叫“分片”的技术把数据分散到不同的机器上,实现横向扩展,它支持复制,就是把同一份数据在多个服务器上存好几个副本,这样即使一台服务器坏了,其他的还能继续工作,保证了数据的安全性和服务的可用性。

对于刚入门的你来说,先把“文档”这种数据模型理解透,然后熟练掌握基本的“增删改查”操作,再了解一下索引的重要性,就已经能应付很多简单的开发场景了,MongoDB的官方文档写得非常友好,遇到具体问题时去查一查,边做边学是最好的方式,别被那些专业术语吓到,它本质上就是一个帮你存东西、取东西的工具,用多了自然就熟了。