一、简介
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。
1,NoSql
NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL"。
关系型数据库具有acid的特性,即原子性(所有事务同事成功或失败)、一致性(数据库处于一致的状态)、独立性(并发的事务之间不会互相影响)、持久性(一旦事务提交后,它所做的修改将会永久的保存在数据库上)。
与关系型数据库相比较,nosql的优势在于更能适应分布式系统。根据我不完全的理解,关系型数据库插入一条数据,如果有主键,它就要查遍所有数据,确认是否合适,而NoSql数据库分布在不同的节点,先插了再说,速度肯定更快。
因此NoSql的优缺点:
优点:
- - 高可扩展性
- - 分布式计算
- - 低成本
- - 架构的灵活性,半结构化数据
- - 没有复杂的关系
缺点:
- - 没有标准化
- - 有限的查询功能(到目前为止)
- - 最终一致是不直观的程序
2,NoSql的分类
类型 | 部分代表 | 特点 |
列存储 | Hbase Cassandra Hypertable |
顾名思义,是按列存储数据的。最大的特点是方便存储结构化和半结构化数据,方便做数据压缩,对针对某一列或者某几列的查询有非常大的IO优势。 |
文档存储 |
MongoDB CouchDB |
文档存储一般用类似json的格式存储,存储的内容是文档型的。这样也就有机会对某些字段建立索引,实现关系数据库的某些功能。 |
key-value存储 |
Tokyo Cabinet / Tyrant Berkeley DB MemcacheDB Redis |
可以通过key快速查询到其value。一般来说,存储不管value的格式,照单全收。(Redis包含了其他功能) |
图存储 |
Neo4J FlockDB |
图形关系的最佳存储。使用传统关系数据库来解决的话性能低下,而且设计使用不方便。 |
对象存储 |
db4o Versant |
通过类似面向对象语言的语法操作数据库,通过对象的方式存取数据。 |
xml数据库 |
Berkeley DB XML BaseX |
高效的存储XML数据,并支持XML的内部查询语法,比如XQuery,Xpath。 |
因此,MongoDB 是一个基于分布式文件存储的数据库。
二、MongoDB启动
下载地址:
https://www.mongodb.com/download-center/v2/community
安装很简单。
mongoDB也有一个可视化工具,下载地址如下:https://studio3t.com/
启动mongDB服务:
mongod --dbpath d:\data\db
即会启动mongoDB服务:
之后根据bin下的mongo.exe启动mongoDB
mongo.exe
进入mongodb:
三、操作MongoDB数据库
1,创建数据库
语法:use 数据库名
注意:a.如果数据库不存在则创建数据库,否则切换到指定的数据库
b.如果刚刚创建的数据库不在列表内,如果要显示它,我们需要向刚刚创建的数据库插入一些数据
db.stu.insert({name:"json",age:18})
插入数据之后,可以显示(stu类似于表名,是一个集合,插入的数据是bson,默认操作所有的东西都要加db)
> show dbs
admin 0.000GB
config 0.000GB
day01 0.000GB
local 0.000GB
2.删除数据库
前提:使用当前数据库(use 数据库名)
示例: use test
db.dropDatabase()
3.查看所有数据
show dbs
4.查看当前正在使用的数据库
a.db
b.db.getName()
5.断开连接
exit
6.查看命令api
help
db.stu.help()
通过***.help()可以找到相关的帮助