MongoDB数据库的安装和配置和使用
1.MongoDB的安装步骤
-
通过软件安装包傻瓜式安装:下载地址:http://dl.mongodb.org/dl/win32/x86_64
-
进入到安装目录(和bin目录同级)下,新建data文件夹
-
进入到data文件夹下,创建db和log目录
-
进入log目录,创建mongo.log
-
回到bin同级目录,创建mongo.config配置文件
-
打开配置文件,添加以下配置内容
dbpath=D:\MongoDB\data\db
logpath=D:\MongoDB\data\log\mongo.log
完成以上,MongoDB安装完成!接下来启动MongoDB数据库:
-
到安装MongoDB数据库的bin目录下打开cmd
-
先启动MongoDB服务--->执行命令:mongod --dbpath db目录所在路径
-
再启动MongoDB数据库---->执行命令:mongo
2.添加MongoDB数据库服务到系统
通过以上方法虽然可以启动MongoDB数据库,但每次都要先进入到数据的bin目录在启动服务,显得太繁琐,因此可以将MongoDB数据库服务添加到系统中,如此就可以在终端随时启动数据库了。
第一步:将MongoDB数据库的bin目录路径放到系统环境变量中
第二步:将MongoDB服务加载到windows系统服务上:
(1) 使用管理员身份打开cmd
(2) 执行下列命令(注意:将log路径和db路径替换成自己的):
mongod --bind_ip 0.0.0.0 --logpath D:\MongoDB\data\log\mongo.log --logappend --dbpath D:\MongoDB\data\db --serviceName "MongoDB" --serviceDisplayName "MongoDB" --install
(3)然后查看服务,将MongoDB的服务启动类型改为自动。
3.MongoDB数据库的使用
1.查看当前数据库:db 默认进入test数据库 2. 查看当前连接的数据库:db.getMongo() 3. 查询所有数据库:show databases / show dbs 注:如果数据库中没有数据,不显示 4. 切换数据库:use 数据库名 注:如果没有这个数据库,则先创建再切入 --- 数据库的隐式创建 5. 创建集合:db.createCollection('集合名') 6. 查询所有集合:show tables / show collections 7. 插入文档: db.集合名.insert({}) db.集合名.save({}) 注:如果要插入多条数据,需要将多条数据放到一个数组中 例如:db.集合名.insert([{},{},……]) 8. 查询文档: db.集合名.find() 9. 删除集合: db.集合名.drop() 10. 删除当前所在的数据库: db.dropDatabase() 11. 修改数据/更新数据: db.集合名.update(query,update[,upsert,multi]) 参数: query:必要参数,代表条件( 大于:$gt,小于:$lt,等于:$eq,大于等于:$gte,小于等于:$lte,不等于:$ne ) update:必要参数,更新的数据 $set:设置值 $inc:增长值 $rename:重命名 $unset:删除 db.students.update({'name':'zhangsan'},{'$set':{'age':30}}) upsert:可选参数,是一个布尔值。 作用:如果不存在update记录,是否插入更新的数据,true代表插入,false不插入 默认是false db.students.update({'name':'lisi'},{'$set':{'name':'lisi','age':60}},true) multi:可选参数,是一个布尔值. 作用:是否将查询出来的数据全部更新. true:全部更新 false:只更新一条 默认值是false db.students.update({'age':{'$gt':20}},{'$set':{'age':1000}},{'multi':true}) 12. 删除文档 db.集合名.remove(query[,justOne]) query:条件,必要参数 justOne:可选参数,是一个布尔值,代表是否只删除一条数据,默认值是false(全部删除) 使用情况: db.集合名.remove(query) db.集合名.remove(query,true) db.集合名.remove({}) 清空文档 13.查询文档:find([query,projection]) db.集合名.find() 查询所有文档 db.集合名.find(query) 查询符合条件的所有文档 db.students.find({'age':{'$lte':20}},{'name':1,'_id':0}) 1代表显示,0代表不显示 注:find()查询时,查询出来的数据是一行显示的, 如果数据属性过多,不方便查看,可以使用pretty()格式化输出 db.集合名.find().pretty() db.集合名.findOne([query,projection]) 只查询一条数据 注:findOne()查询出来的数据本身就是格式化之后的,所以,没有pretty() 14. MongoDB中的AND条件的使用:使用$and mysql:select * from xxx=xx and xx=xx mongodb:db.students.find({'$and':[{'name':'lisi'},{'age':19}]}) 15. MongoDB中的OR条件使用:使用$or mysql:select * from xxx=xx or xx=xx MongoDB:db.students.find({'$or':[{'name':'zhangsan'},{'name':'maliu'}]}) 16. 查看某一列去重后的数据:distinct() MySQL:select distinct xx from xxx MongoDB:db.students.distinct('age') 17. MongoDB中的限制查询:limit() mysql:select * from xxxx limit 2,3 mongodb:db.students.find().limit(n) 查询前n条数据 18. MongoDB中的跳跃查询:skip() MongoDB:db.students.find().skip(m) 代表跳过m条数据,从m+1条开始查询 19. MongoDB的分页: db.students.find().skip(1).limit(3) 20. MongoDB的模糊查询: MySQL:select * from xx where xxx like %xxx% MongoDB:db.students.find({'name':/a/}) db.students.find({'name':/an$/}) db.students.find({'name':/^zh/}) db.students.find({'name':/正则表达式/}) 21. MongoDB的统计方法 mysql:select count(*) from xxx MongoDB:db.students.find().count()
3.1 MongoDB数据库使用的练习
1.创建一个名为gzcar的数据库
use gzcar
2.创建sh_car集合
db.createCollection(‘sh_car’)
3.插入以下两条数据
第一条:brand:dazong year:2012 o_p:250000 p_p:220000 mile:18
第二条:brand:benchi year:2014 o_p:350000 p_p:320000 mile:10
字段名称:
Brand:品牌
Year:年份 【数字类型】
O_p:原价 【数字类型】
P_p:现价 【数字类型】
Mile:里程数【数字类型】
db.sh_car.insert([{‘brand’:’dazhong’,’year’:2012,’o_p’:250000,’p_p’:220000,’mile’:18},{‘brand’:’benchi’,’year’:2014,’o_p’:350000, ’p_p’:320000,’mile’:18}])
4.查询年份在2011-2015年的车辆的品牌、原价及现价并格式化输出。(1:表示显示,0:表示隐藏)
db.sh_car.find(‘$and’:[{‘year’:{‘$gt’:2011}},{‘year’:{‘$lt’:2015}}],{‘year’:0,’mil’:0}).pretty()
5.查找所有品牌为大众或者奔驰的车,并且满足现价格低于30万,原价20万以上。
db.sh_car.find(‘$or’:[{‘brand’:’dazong’},{‘brand’:’benchi’}],’$and’:[{‘p_p’:{‘$lt’:300000}},{‘o_p’:{‘$gt’:200000}}])
6.将2011年以后所有大众车的现价增加1000。
db.sh_car.update({‘year’:{‘$gt’:2011}},{‘$inc’:{‘p_p’:1000}})
7.查询出原价大于20万,现价小于40万的所有车辆信息中的第2条至第4条数据。
db.sh_car.find(‘$and’:[{‘o_p’:{‘$gt’:200000}},{‘p_p’:{‘$lt’:400000}}]).skip(1).limit(3)
8.查询出品牌中包含c并且里程数在18公里至30公里内的所有车辆信息。
db.sh_car.find(‘$and’:[{‘brand’:/c/},{‘mil’:{‘$gt’:18}},{‘mil’:{‘$lt’:30}}])
9.计算集合中所有的文档数量。
db.sh_car.find().count()
10.查询出所有年份在2012-2016并且满足现价高于30万或者原价低于25万的车辆信息。
db.sh_car.find(‘$and’:[{‘year’:{‘$gt’:2012}},{‘year’:{‘$lt’:2016}}],’$or’:[{‘p_p’:{‘$gt’:300000}},{‘o_p’:{‘$lt’:250000}}])