原文地址:http://www.dpfblog.com/2017/09/10/MongoDB/
什么是NoSQL?
NoSQL,指的是非关系型的数据库。
没有行、列的概念。用 JSON 来存储数据。集合就相当于 SQL 数据库中的“表”,文档就相当于“行”。
适用于:
-
数据模型比较简单;
-
需要灵活性更强的IT系统;
-
对数据库性能要求较高;
-
不需要高度的数据一致性;
- 对于给定key,比较容易映射复杂值的环境。
什么是MongoDB?
手册:https://docs.mongodb.org/manual
MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统,旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB安装及运行下载最新的stable版:https://www.mongodb.com/download-center#community
安装好之后,我们看一下安装的文件夹,例如:
C:\Program Files\MongoDB\Server\3.0\bin,将其加入到系统的path环境变量中,那么我们就能在系统的任何盘符,使用mongo命令了。
mongo 使用数据库
mongod 开机
mongoimport 导入数据
- 启动mongod服务
--dbpath就是选择数据库文档所在的文件夹。
- 管理数据库(新开一个cmd)
那么,运行环境就是mongo语法了。
MongoDB常用操作查看所有数据库
show dbs
使用数据库、创建数据库
use test
use一个不存在的,就是新建。
查看当前所在数据库
db
插入数据
数据库中不能直接插入数据,只能往集合(collections)中插入数据。不需要创建集合,只需要写点语法:
db.student.insert({"name":"Davis","age":"22","sex":"男"})
db.student 系统发现student是一个陌生的集合名字,所以就自动创建了集合。
删除数据库
删除当前数据库
db.dropDatabase();
数据库使用
插入数据
插入数据,随着数据的插入,数据库创建成功了,集合也创建成功了。
db.student.insert({"name":"Davis","age":"22","sex":"男"})
我们不可能一条一条的insert。所以,我们希望用sublime在外部写好数据库的形式,然后导入数据库:
导入json
mongoimport --db test --collection student --drop --file data.json
导入json数组
mongoimport --db test --collection student --drop --file data.json --jsonArray
-db test
想往哪个数据库里面导入
--collection student
想往哪个集合中导入
--drop
把已存在数据清空
--file data.json
哪个文件
这样,我们就能用sublime创建一个json文件,然后用mongoimport命令导入。
查找数据
-
查找数据,用find。find中没有参数,那么将列出这个集合的所有文档:
db.student.find()
-
精确匹配
db.student.find({"age":22})
-
多个条件
db.student.find({"age":12, "sex":"男"})
-
大于条件
db.student.find({"age":{$gt:20}})
-
或者(寻找所有年龄是20岁,或者22岁的学生)
db.student.find({$or:[{"age":20},{"age":22}]});
-
查找完毕之后,打点调用sort,表示升(1)降(-1)排序
db.student.find().sort({"age":1, "score.English":1})
- 查看当前Mongodb运行状态
db.student.stats();
分页查询
通过 sike()
与 limit()
方法
假如,第一页是page=0。每页10条,所以当前页的查询语句
db.student.find({}).limit(10).skip(page*10)
limit()
表示读取的条数,sike()表示略过的条数。
修改数据
- 修改里面还有查询条件
查找名字叫做Davis的,把年龄更改为20岁:
db.student.update({"name":"Davis"},{$set:{"age":20}})
-
更改所有匹配项目
db.student.update({"sex":"男"},{$set:{"age":20}},{multi: true});
- 完整替换,不出现$set关键字了
db.student.update({"name":"Davis"},{"name":"dpf","age":20});
删除数据
-
删除集合中高数成绩为 60 的学生
db.student.remove({'score.English':60});
- 删除第一条找到的记录可以设置 justOne 为 1
db.student.remove({'score.English':60},1);
MongoVE连接MongoDB
不显示数据问题
mongoDB3.2版本之后默认开启的存储引擎是 wiredTiger
,使用这种存储引擎存储的数据只能在命令行中看到,在 mongoVUE 中看不到。
所以,需要换成 mmapv1
操作引擎,此时就可以在 mongoVUE 中看到 Collections 下的内容
mongod --storageEngine mmapv1 --dbpath D:\mongo(路径)
选择 mmapv1
存储引擎后,ns
后缀文件就是数据库
热门评论
这么好的东西没人评论,我不服
这么好的东西没人评论,我不服