本节知识点
- 本节主要讲解MongoDB的安装和实现创建数据库,删除数据库,以及增删改查
(一) MongoDb 的安装
第一步:下载
可以从官方网站下载。但是需要填写一系列表单。比较繁琐。可以点击下面直接下载
点击我下载windows版本的第二部:安装
你要是点击了下面的custom,请一定要记住安装路径
- 第三部 配置环境变量
下图中的C盘路径盘符就是你刚才自定义安装Mongodb的Bin目录下,配置环境变量的作用就是每次不用cd到这个盘符,就能直接敲Mongodb的指令
(二)MongoDb的开启使用
- (1) 使用MongoDb 必须要利用cmd控制台
在运行里面敲cmd 进入控制台以后 敲
$ mongod --dbpath D:\WebTool\Mongodb\data
这个进程就表示开启Mongod 数据库然后放到一边不用管了。因为需要全程开着它
- (2)在开启一个新的cmd控制台,输入mongo接着回车。这样就正式开启了mongo的使用了,然后在这个面板下面敲指令了
$ mongo
(三)MongoDB的基本指令,除了几个不是基本上指令都是db开头,后面不加分号
- 列出所有的数据库
$ show dbs
- 使用数据库
$ use haha (haha就是数据库名称)
- 查看当前数据库,输出的结果就是你正在使用的数据库
$ db
- 找到对应的数据库,这个指令就是显示数据库的全部信息。这样方便知道数据库对应的文件
$ db.printCollectionStats()
- 删除数据库 首先use 这个数据库,然后再删除,这里千万要注意大写和()
$ db.dropDatabase()
- 数据库导入的就是个集合,这里要特别注意执行导入前请按下ctrl+c退出目录不要在mongo环境下执行
$ mongoimport --db haha --collection cat --drop --file D:\1.json
haha 代表数据库名称
cat 代表集合的名称
file 后面代表保存的路径
- 数据库导出的也是个集合 同上也必须要在根目录下执行,不能再mongo环境下执行
$ mongoexport --db haha --collection cat -o d:\2.json
haha就是数据库名称
cat 就是集合名称
-o 就是地址
(四)MongoDb的增删改查
在此之前使用use 数据库
数据库插入
- MongoDb的插入指令(这里特别注意use 数据库并不是创建数据库必须往数据库里面插入一条数据,这样才叫创建)
$ db.student.insert({“name”:”xiaoming”});
db就是数据库 student就是集合名称换成你自己的集合名称.insert就是里面的要插入的数据
数据库集合的删除
- Mongodb的删除集合一条指令
$ db.student.remove({"title":"小明"})
就表示删除数据库下面集合是student下面的title叫小明的,全部删除
$ db.student.remove({"title":"小明"},{justOne: true})
这个就是表示只删除一个叫小明的,其余的小明都留下
- 数据库下面集合的删除(表示删除这个student的集合)
$ db.student.drop()
数据库更新指令
语法:必然会有$set:
db.collection.update({条件},{更新的内容})
举例:用了$set表示更新的一个数据
db.cat.update({"name":"小红"},{$set:{"age":78}})
要是更新的栏目是一个对象那只有
score的结构就是score:{"yuwen":80,"shuxue":60}
db.cat.update({"name":"小红"},{$set:{"score.yuwen":80}})
要是更新的栏目是一个数组那只有
hobby的结构就是 hobby:["学习","看书"]
db.cat.update({"name":"小红"},{$set:{"hobby.0":"打游击"}})
这样学习就变成了打游击
以上语句只会更改查询到的第一条数据。要是想全部都更改
加一个multi:true的参数
db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}},{multi:true})
要是有需求需要更改多个值,则需要这样写在一个括号内
db.cat.update({"name":"小红"},{$set:{"hobby.0":"123","age":20}})
数据库查找指令
语法结构
db.collection.find({条件})
格式化查询,就是把JSON变成可视化而不是压缩版
db.collection.find().pretty()
除了find() 还有一个方法叫findOne()就表示找到一个
- 精确匹配
db.student.find({"score.shuxue":70});
- 多个条件
db.student.find({"score.shuxue":70 , "age":12})
找到数学是70并且年龄是12岁的
- 条件查询
找到语文成绩大于50的
$gt 就是大于
$gte 就是大于等于
$lt 就是小于
$lte就是小于等于
$or 就是或者
$ne 就是不等于
- 找到语文成绩大于50的 下面就是代码
db.student.find({"score.yuwen":{$gt:50}});
- 下面就是找到年龄是9岁或者11岁的
db.student.find({$or:[{"age":9},{"age":11}]})
- 排序升序或者降序
表示要是第一个属性要是相同,那就按照第二个属性排序
-1表示由大到小 1表示由小到大
db.student.find().sort( { "age": 1, "score.yuwen": -1 } )
- 要是想查询数组就是
hobby格式["睡觉","吃饭"]
db.cat.find({"hobby.0":"睡觉"})
- 分页方法 limit() skip()隔断
limit表示每页要分多少条。skip表示略过多少条也就是从什么位置开始
db.student.find({}).limit(10).skip(page*10)
- 获取数据的总数
db.cat.stats().count
- 检查检索的过程(了解就好了)
db.student.find({"name":"user888"}).explain()
- 模糊查询
表示查询到name是小开头的
db.cat.find({'name':/小/})
要是需要多重匹配查询
db.cat.find({'name':/小/,"hobby.0":/打/})
索引
- 创建索引 ensureIndex
1(升序) -1(降序)下面就表示给age加上索引
db.users.ensureIndex({age:1})
- 查看索引 getIndex()
db.user.getIndexes()
- 删除索引 dropIndex() dropIndexes()
db.user.dropIndex("age")