Mongodb数据库
数据库概述
-
数据库是用来存储数据的
-
数据库是按照数据结构来组织 、存储和管理数据的仓库。
-
数据库分为两种
- 关系型数据库
- oracle mySQL Access SqlServer db2
- 特点
1.以表作为基本结构,
2.每一列都有标题,叫做字段
3.每一行内容代表一条数据
4.数据库 -> 表 -> 行
- 非关系型数据库
- nosql mongoDB Redis,HBase,CouchDB noSQL(not only sql 是对不同于传统的关系型数据库的数据库管理系统的统称。NoSQL用于超大规模数据的存储 这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。)
- 数据库 -> collections集合 -> 文档
- 两者的区别
- 有没有表
- 数据之间是否有关联,复杂度高不高
- 能不能存储二进制数据
- 关系型数据库
-
MongoDB的存储数据格式: Bson
-
MongoDB配置和安装
- 全局环境变量配置: 4.0版本以上是自动的,< 4.0是手动配置
- 系统服务配置:电脑开机,mongoDB服务启动
文档型数据这个名字中,“文档”两个字很容易误解。其实这个文档就是 bson 。bson 是 json 的超集,比如 json 中没法储存二进制类型,而 bson 拓展了类型,提供了二进制支持。mongodb 中存储的一条条记录都可以用 bson 来表示。所以你也可以认为,mongodb 是个存 bson 数据的数据库。
2.4.MongoDB简介
MongoDB 是一个基于分布式文件存储的数据库。
- 分布式算法指的是讲一个大的任务分成多个小的任务,最后将小任务的结果拼接起来,
- 随着大数据的不断发展,非关系型数据库已经变得越来越重要,相关的产品也都得到了飞速发展。而其中MongoDB更是佼佼者,作为高性能开源文档数据库,MongoDB以敏捷、可扩展和对企业应用友好而著称,因其操作简单、完全免费、源码公开等特点,受到了IT从业人员的青睐,并被广泛部署于实际的生产环境中。
2.5.MongoDB优点
它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有:
- 面向集合存储,易存储对象类型的数据。
- 模式自由。
- 支持动态查询。
- 支持完全索引,包含内部对象。
- 支持查询。
- 使用高效的二进制数据存储,包括大型对象(如视频等)。
- 文件存储格式为BSON(一种JSON的扩展)
- 自动处理碎片,以支持云计算层次的扩展性
2.6.BSON
BSON是一种类似json的二进制形式的存储格式,简称Binary JSON,它和JSON一样,支持内嵌的文档对象和数组对象,但是BSON有JSON没有的一些数据类型,如Date和BinData类型。
BSON可以做为网络数据交换的一种存储形式,这个有点类似于Google的Protocol Buffer,但是BSON是一种schema-less的存储形式,它的优点是灵活性高,但它的缺点是空间利用率不是很理想。
BSON有三个特点:轻量性、可遍历性、高效性。
2.7.非关系型数据库与关系型数据库区别
- 非关系型数据库的优势:
-
- 性能
- NOSQL是基于键值对的,可以想象成表中的主键和值的对应关系,而且不需要经过SQL层的解析,所以性能非常高。
-
- 可扩展性
- 同样也是因为基于键值对,数据之间没有耦合性,所以非常容易水平扩展。
-
- 关系型数据库的优势:
-
- 复杂查询
- 可以用SQL语句方便的在多个表之间做非常复杂的数据查询。
-
- 事务支持
- 使得对于安全性能很高的数据访问要求得以实现
-
非关系型数据库文件存储格式为BSON(一种JSON的扩展)。
数据库功能是用来存储数据的。
MongoDB基础使用(重要!!!)
待下载安装并配置好之后,打开终端
首先 mongo
> Help 查看帮助
> show dbs 显示数据库列表
> use dbname 创建 | 切换数据库
- 如果数据库不存在,则创建数据库dbname,
- 否则切换到指定数据库dbname
- 创建的数据库并不在数据库的列表中,要显示它,我们需要向数据库dbname插入一些数据
- 例如: use 1907
> show collections 显示数据库中的集合
增加数据
db.webs.save({"name":"老李"}); //webs 为数据库下的集合collections
db.webs.insert({"name":"ghost", "age":10}); //同上
> save()和insert()也存在着些许区别
> 若新增的数据主键已经存在,insert()会不做操作并提示错误,而save() 则更改原来的内容为新内容。
_id是主键,主键是每条数据的唯一标识,不能重复,就像身份证是每个人唯一的编号一样。
存在数据:{ _id : ObjectId("57e8d34b4764fb71d0a89caa"), " name " : " 老李"} ,_id是主键
删除数据
1、删除文档
> db.users.remove({}) //删除users集合下所有数据
> db.users.remove({"name": "lecaf"}) //删除users集合下name=”lecaf”的数据
2、删除集合
> db.users.drop() // 删除集合users
3.删除数据库
> db.runCommand({"dropDatabase": 1}) //除当前数据库,注意 此处的1没加双引号
查找数据库
> db.users.find() //查找users集合中所有数据
> db.users.findOne() //查找users集合中的第一条数据
> db.users.find().pretty() //格式化查询到的数据
修改数据
> db.webs.update({"name":"a1"}, {$set: {sex:”women”}},true,true)
- 第一个参数是查找条件
- 第二个参数是修改内容
- 第三个参数表示匹配所有符合条件的数据
- ,第四个参数表示修改所有匹配到的数据
条件查找
> db.users.find({ "age" : 20 }) //查找users 集合中age = 20 的数据
> db.users.find({ "age" : { $gt: 20 } }) //查找users 集合中age 大于 20 的数据
> db.users.find({ "age" : { $lt: 20 } }) //查找users 集合中age 小于 20 的数据
> db.users.find({ "age" : { $gte: 20 } }) //查找users 集合中age 大于等于 20 的数据
> db.users.find({ "age" : { $gt: 20 , $lt: 30 } }) //查找users 集合中 大于20 并且小于20的数据
> db.users.find({ "age" : { $ne: 20 } }) //查找users集合中age 不等于20的数据
> db.users.find({ "age" : { $mod : [ 10 , 5 ] } }) //查找users集合中,age%10 == 5 的数据
> db.users.find({ "age" : { $in: [ 21, 22, 23 ] } }) //查找users集合中,age 等于 21 或 22 或 23 的数据
> db.users.find({ "age" : { $nin: [ 21, 22, 23 ] } }) //查找users中,age不等于21 、 22、 23 中任何一个的数据
> db.users.find({ "families" : { $size: 5 } }) //查找users中,families的数量 | 个数 | 尺寸 为5 的数据
> db.users.find({},{_id: 0,name:1,age:0}}). //将users集合中的_id 隐藏,
name显示,age隐藏,打印出来