从0到1操作Mongodb数据库

461 阅读4分钟

这是我参与8月更文挑战的第4天,活动详情查看:8月更文挑战

数据库有很多,当然常用的也有很多,我们这里挑选两个类别下面主流的数据库进行分析讲解

为什么使用数据库

我们已经多次说明了数据库的重要性,今天的开篇还是以数据库的重要性开题,数据库就是存储数据的,那么存储数据用txt就行了啊,为什么要用数据库?

理由之1:数据库有行、列的概念,数据由关系,数据不是散的。 理由之2:数据库能够提供非常方便的接口,让增删改查操作变得简单 理由之3:数据库不能自己玩儿,要向PHP/NET/JSP等语言提供接口

理解关系型和非关系型数据库

关系型数据库

数据库按照大类分为关系型数据库(也叫结构型数据库)和非关系型数据库

常用的关系型数据库有:MySQL(使用人数最多的开源数据库),SQL SERVER、Oracle、Access

这些数据库典型的特点就是每个表中都有明确的字段,每行记录,都有这些字段,不能有的行有,有的行没有

但是这个有什么问题呢?

比如,我们现在想往一个已经有1000条数据的数据库中增加一个字段,之前已经存在的数据,实际上不需要增加这个字段,因为用户已经填写完表单,不需要再用高中信息了,我们的意图就是在今后注册的用户,需要填写高中信息。但是我们刚刚说了,所谓的字段,是表的一个结构,所有的行都必须拥有,不能有的行有这个字段,有的行没有这个字段。

可想而知,大数据时代,数据库中有100w条数据都算少的,如果我们要动字段,时间太长,所以,字段这个东西,太不灵活

数据不灵活。一个字段,需要是同样类型的数据,不能一行记录是文本,一行记录是数字

111.png

222.png

NOSQL

引用一段百度百科的官方回答什么是 NOSQL: NoSQL,泛指非关系型的数据库。随着互联网 web2.0网站的兴起,传统的关系数据库在应付 web2.0网站,特别是超大规模和高并发的 SNS 类型的 web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL 数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。

我们来对比下关系型数据库和 NOSQL

333.png

444.png

非结构型数据库,没有行、列的概念,用JSON来存储数据。集合就相当于“表” ,文档就相当于“行” ,文档就是JSON

因此,我们总结NoSQL数据库在以下的这几种情况下比较适用: 1、数据模型比较简单; 2、需要灵活性更强的IT系统; 3、对数据库性能要求较高; 4、不需要高度的数据一致性; 5、对于给定 key,比较容易映射复杂值的环境。

我们看,有些系统,特别需要筛选,比如,筛选出所有女生大于 20岁的,那么 SQL 型数据库,非常擅长!因为有行、列的概念。但是有些系统,真的不需要进行那么多的筛选,比如站内信,站内信只需要存储就好了。不需要筛选,那么就是 Nosql 擅长的。

所以任何技术都有自己的应用场景,并不单纯的评判好与不好

mongodb命令行操作

首先 cmd 启动后,输入 mongo 进入到 mongo 环境,或者找到 mongo 的安装路径 bin 下有一个mongo.exe 双击运行也可以

  1. 列出所有数据库:show dbs
  2. 使用某个数据库:use 数据库名
  3. 如果想新建数据,也是use ,use 一个不存在的,就是新建注意:数据库为了防止我们误操作,并不会真的创建,如果想着你的创建,那么必须插入一个数据,数据库中不能直接插入数据,只能往集合(Collection)中插入数据,不需要创建集合,只需要写点语法:db.student.insert({"name“:”xiaoming"}) 系统发现studnet是一个陌生的集合的名字,所以就自动创建了集合
  4. 查看当前所在数据库:db
  5. db.student.insert({"name":"zhnagsna","age":12,"sex":"man"}) student就是所谓的集合,集合中存储着很多JSON。db.一个未知的集合名字,这个集合将自动创建
  6. 列出当前所有集合:show collections
  7. 列出数据:db.student.find()
  8. 删除数据库,删除当前所在的数据库:db.dropDatabase(); 注意大小写
  9. 更新数据 db.集合名.update({name:'hr'},{name:'mnc'})
  10. 删除集合中的数据:db.集合名.remove(删除的文档的条件)
  11. 删除集合:db.集合名.drop()