>[success] # MongoDB * 传统型数据库 ~~~ 1.表与表直接的存在关系,需要通过sql语言操作,在操作数据库之前需要设 计表的结构,而且支持约束例如:唯一、主键、默认键、非空的约束 ~~~ * MongoDB ~~~ 1.非结构型数据库。没有行、列的概念。用JSON来存储数据。集合就相当于“表”,文档就相当于“行”。 2.结构数据库-》数据表(类似数组的集合)-》表记录(类似字典的文档对象) 3.MongoDB不用设计数据结构 4.其中传统中的表在里面叫法表示集合,每一行的数据信息叫文档 ~~~ ![](https://box.kancloud.cn/b22577b7c0984650cff245a82be42406_570x379.png) >[danger] ##### 试用的场景 ~~~ 1、数据模型比较简单; 2、需要灵活性更强的IT系统; 3、对数据库性能要求较高; 4、不需要高度的数据一致性; 5、对于给定key,比较容易映射复杂值的环境。 ~~~ >[danger] ##### 安装 <a href='https://www.mongodb.com/download-center?initial=true#community'>下载地址</a> <a href="https://www.mongodb.org/dl/win32/x86_64-2008plus-ssl?_ga=2.167429814.904148266.1539497072-1693933222.1539497072">历史版本</a> <a href="https://www.mongodb.org/dl/win32/i386">32位历史版本</a> * 安装步骤下载后就一直点下一步,然后配置好环境变量 win7系统需要安装补丁,KB2731284。 ![](https://box.kancloud.cn/efd665d018e0f26962cb6d12f1d68255_482x370.png) * 输入mongod --version 测试是否安装成功 ![](https://box.kancloud.cn/fcacf15ebec7ae6a97fbaf1f703dafc6_425x136.png) >[success] # 使用 ~~~ mongod 开机 mongo 使用数据库 mongoimport 导入数据 ~~~ >[danger] ##### 启动指令 -- mongod ~~~ 1.启动指令 mongod ,输入指令后会默认的在磁盘根目录 /data/db 创建数据 库,所以第一次时候需要在 磁盘根目录手动创建/data/db 文件目录 2.在cmd 设置储存目录 使用 mongod --dbpath 路径 例如mongod --dbpath c:\mongo ~~~ >[danger] ##### 启动后使用 -- mongo ~~~ 1.输入mongod开始,mongodb的运行后,在打开一个cmd,输入mongo,开始使用mongodb数据库 ~~~ >[danger] ##### 启动后离开数据库 ~~~ 1.输入exit ~~~ >[danger] ##### 列出所有数据库 ~~~ 1.show dbs ~~~ >[danger] ##### 创建及使用数据库 * 如果想新建数据库,也是use。use一个不存在的,就是新建。 ~~~ 1.use 数据库名字 例如use itcast ~~~ >[danger] ##### 删除当前数据库 ~~~ 1.db.dropDatabase(); ~~~ >[danger] ##### 查看当前使用的数据库 ~~~ 1.db ~~~ >[danger] ##### 查看数据库中的表 * 表就是集合 ~~~ show collections ~~~ >[danger] ##### 导入数据 ~~~ mongoimport --db test --collection restaurants --drop --file primer-dataset.json ~~~ * 说明 ~~~ -db test 想往哪个数据库里面导入 --collection restaurants 想往哪个集合中导入(也就是传统数据库中的表) --drop 把集合清空 --file primer-dataset.json 哪个文件 ~~~ >[danger] ##### 插入数据 -- insert ~~~ 1.上面我们使用use 创建了一个itcast 的数据库,数据库中不能直接插入数 据,只能往集合(collections)中插入数据。不需要创建集合,只需要写点语法 2.插入数据,随着数据的插入,数据库创建成功了,集合也创建成功了 3.使用use 创建数据库后,如果没有创建集合,数据库是查询不到的 ~~~ * 往 student集合中插入name 是小明的数据 ~~~ db.student.insert({“name”:”xiaoming”}); ~~~ >[danger] ##### 查找数据 * find() 查到集合中所有文档 ~~~ db.student.find() ~~~ * find({ }) 精准匹配 ~~~ db.student.find({"score.shuxue":70}); // 在score下嵌套了个字典所以跟普通编程语言类似点出对应对象 ~~~ * find({ }) 查询多个条件 ~~~ db.student.find({"score.shuxue":70 , "age":12}) ~~~ * 查询大于条件$gt ~~~ db.student.find({"score.yuwen":{$gt:50}}); ~~~ * 查询或or ~~~ db.student.find({$or:[{"age":9},{"age":11}]}); ~~~ * 使用排序 ~~~ db.restaurants.find().sort( { "borough": 1, "address.zipcode": 1 } ) ~~~ >[danger] #### 更改 ~~~ 1.第一个是要更改数据的条件,第二个使用set是要更改的数据 ~~~ * 查找名字叫做小明的,把年龄更改为16岁 ~~~ db.student.update({"name":"小明"},{$set:{"age":16}}); ~~~ * 更改所有数据条件 ~~~ db.student.update({"sex":"男"},{$set:{"age":33}},{multi: true}); ~~~ * 不加set 是吧整个数据全部替换 ~~~ db.student.update({"name":"小明"},{"name":"大明","age":16}); ~~~ >[danger] ##### 删除 ~~~ db.表.remove( { "borough": "Manhattan" } ) ~~~