MongoDB的安装与基本操作:
安装成功后启动mongdb服务:
找到mongdb安装路径:
两种打开方式:
- 直接在F:\devSoftware\env\MongoDB\bin中双击打开mongo.exe
- 直接在F:\devSoftware\env\MongoDB\bin的地址栏输入cmd,然后输入命令mongo就能实现通过命令行开启mongdb。
其他语法:下载mongdb的安装包解压后,通过管理员权限打开cmd,进入安装好mongdb
的路径,
- 创建服务:bin/mongod.exe --install --dbpath 磁盘路径 --logpath 日志路径
- 删除服务:bin/mongd.exe --remove
- 启动服务:net start mongdb (退出:exit 之后启动直接输入mongo)
- 关闭服务:net stop mongodb
mongdb的基本操作:
-
查看数据库:
语法:show databases(打开mongdb之后输入命令即可)
-
选择数据库:
语法:use 数据库名称
-
查看集合:
语法:show collections
效果: -
创建集合:
语法:db.createCollection(‘集合名’)
效果: -
删除集合:
语法:db.集合名.drop()
效果:
如何删除数据库:1.通过use语法选中数据库
2.通过db.dropDatabase()删除数据库
小总结
数据库(查看,创建,选择,删除)
查看:show databases
创建:单独的语法,但是忽略隐式创建
选择:use 数据库名
删除:1.通过use选中数据库,2.通过db.dropDatabase()删除数据库
集合(查看、创建、删除)
查看:show collections
创建:db.createCollection(‘集合名’) 多学一招:忽略,后期插入数据 隐式创建集合
删除:db.集合名:drop()
MongoDB文档增删改查(CRUD)
数据库主要用来存放项目数据,前面已经学了数据库和集合的创建,接下来需要通过MongoDB语法实现集合中数据的增删改查
- 插入文档
增:
语法:db.集合名.insert(JSON数据)
说明:集合存在-则直接插入数据,集合不存在-隐式创建
例如:在test2数据库中的c1集合中插入数据(姓名为webopenfather年龄18岁)
use test2 db.c1.insert({uname:"webopenfather",age:18})
注意:1.数据库和集合不存在都隐式创建
2.对象的键统一不加引号方便看,但是查看集合数据时系统会自动加
注意3:MongoDB会给每一条数据增加一个全球唯一的_id键
思考:1.是否可以自定义id值
回答:可以,只需要给插入的json数据增加_id键即可(但实战强烈不推荐)
思考2:如何一次性插入多条数据?
回答:传递数组,数组中写一个个json数据即可
//一次性插入三条数据到c1集合
db.c1.insert([
{uname:"3"},
{uname:"3"},
{uname:"3"}
])
思考3:如何快速插入10条数据
回答:mongdb底层是使用js引擎实现的,所以支持部分js语法,因此可以使用for循环,代码如下:
for (var i =1;i<=10;i++){
print(i)
}
//需求:在test2数据库c2集合中插入10条数据,分别为a1,a1 ... a10
use test2
for (var i =1;i<=10;i++){
db.c2.insert({uname:"a"+i,age:i})
}
- 查询文档
基础语法:db.集合名.find(条件 [,查询的列])
条件:查询所有数据 {}或者不写
查询age=6的数据 {age:6}
既要查询age=6又要性别=男 {age:6;sex:‘男’}
查询的列:
(可选参数)
不写 -查询全部列(字段)
{age:1} 只显示age列(字段都显示)
{age:0} 除了age列(字段都显示)
注意:不管怎么写系统自定义的_id都会显示
例子1:查询所有数据
列子2:查询年龄大于五岁的数据
db.c1.find({age:{$gt:5}})
结果:
第二个例子中需要用到一些新语法:db.集合名.find({键:值}) 注意:值不直接写 {运算符:值}
db.集合名.find({
键:{运算符:值}
})
例子3:查询年龄是五岁,八岁,十岁的数据
结果:
例子3:只看年龄列或者年龄以外的列(不管_id)
结果:
- 修改文档
基本语法:db.集合名.update(条件,新数据[,是否新增,是否修改多条])
是否新增:是指条件匹配不到数据则插入,true是插入,false否不插入(默认)
是否修改多条:只讲匹配成功的数据都修改(true是,false否(默认))
准备工作:
use test2
for(var i =1;i<10;i++){
db.c3.insert({"uname":"zs"+i,"age":i});
}
例子1:将{uname:“zs1”}改为{uname:“zs2”}
发现:默认是替换不是修改
解决:使用升级语法 修改器
需求:使用修改器将zs4修改成zs44
语法:db.c3.update({uname:“zs4”},{$set:{uname:“zs44”})
例子2:给{uname:“zs10”}的年龄增加2岁
结果:
递减就换成-2即可
例子4
验证第三个参数(true和的false)
验证是否修改多条,true是,false否(默认)
- MongoDB删除文档
语法:db.集合名.remove(条件[,是否删除一条])
注意:是否删除一条,true是,false否,默认
MongoDB文档增删改查的小结
1.增Create
db.集合名.insert(JSON数据)
2.删Delete
db.集合名.remove(条件[,是否删除一条true是,false否默认])
也就是默认删除多条
3.改Update
db.集合名.update(条件,新数据[,是否新增,是否修改多条])
升级语法db.集合名.update(条件,{修改器:{键:值}})
4.查Read
db.集合名.find(条件,[,查询的列]