愿人长寿,万里同乐。大家好,我是黄伟。今天给大家介绍一下Mango数据库,一起来看看吧。前言Mongodb是一个分布式文档存储数据库,用C++语言编写,旨在为WEB应用程序提供可扩展的高性能数据存储解决方案。MongoDB是一个高性能、开源、无模式的文档数据库,是比较流行的NoSql数据库之一。它可以在许多场景中用作传统关系数据库或键/值存储的替代方案。下面说说它的具体用法。一、安装与配置1、下载下载地址如下:https://590m.com/file/7715018-442253530然后点击msi安装文件进行安装。由于比较大,建议不要安装在C盘,选择下图的选项即可。.这里我选择的是E:\mongodb,按步骤操作,总体还是比较简单的,唯一需要注意的是有个选项不能勾选,如下图:2.创建配置文件E:\mongodb\data\log目录用于存放日志文件;在E:\mongodb\data\log目录下新建mongodb.log,用于存放日志信息;创建E:\mongodb\data\db目录存放数据库数据;并在E:\mongodb目录下创建mongo.config,在文件里面复制如下内容:#datafilehere=对应数据存放目录dbpath=E:\mongodb\data\db#logfilehere=对应到日志文件所在路径logpath=E:\mongodb\data\log\mongodb.log#错误日志采用append方式。配置这个选项后,mongodb的日志会追加到已有的日志文件中,而不是新建文件logappend=true#启用日志文件,默认启用journal=true#过滤掉一些无用的日志信息,如果需要调试,请设置为falsequiet=true#默认端口号为27017port=270173。配置环境变量4.创建数据库文件存放位置进入命令提示符,输入以下命令:mongod.exe--dbpathE:\mongodb\data\db--dbpath为创建的数据库文件存放位置,mongo需要确认目录所在位置5.验证是否可以正常访问我们在浏览器中输入如下网址:http://localhost:27017/如图:浏览器返回这样一串英文,意思是mongodb数据库启动成功。但是这样每次都启动太麻烦了,我们可以把它添加到系统任务中,让它自动启动。6.安装日志文件和服务名称C:\Users\Administrator>mongod.exe--dbpathE:\mongodb\data\db-logpathE:\mongodb\data\log\mongodb.log-install-serviceName"MongoDB"如果是显示已经存在,如图:然后,先删除服务:scdeleteMongoDB再次输入之前的命令。7.启动mongodb然后我们启动它:netstartMongoDB可以看到启动成功了,好不容易。关闭mongodb服务:netstopMongoDB2.对mongodb的数据库进行增删改查众所周知,mongodb没有表的概念,存储都是靠集合来完成的,所以我们需要创建的是集合。下面我们就来看看mongodb最常见的数据库操作。首先打开命令提示符,输入如下命令进入环境://createdatabaseusedata//显示所有数据库showdbsshowdatabases//查看当前数据库dbdb.getName()//删除当前数据库db.dropDatabase()//修复当前数据库db.repairDatabase()//从指定机器复制指定数据库数据到数据库db.copyDatabase("my_db","you_db","127.0.0.1")//从Clone上的数据库指定主机db.cloneDatabase("127.0.0.1")//创建一个集合,集合大小固定为100,最大值为1000db.createCollection('student',{capped:true,size:100,max:1000})//Showallcollectionsshowcollections//获取当前db的所有collection集合db.getCollectionNames()//显示当前db的所有collection索引状态db.printCollectionStats()//删除collectiondb.hw.drop()//获取指定名称的聚合集合db.getCollection("hw")//如果插入集合ex的_idists,会报错db.hw.insert({_id:0001,'name':'hw','age':10})//显示集合的内容db.hw.find()//显示一个集合内容db.hw.findOne()//格式化并显示集合内容db.hw.find().pretty()//保存集合_id并更新db.hw.save({_id:0001,'name':'hw','age':10})//更新集合$set指定key,不存在则更新,create$unsetdeletedb.hw.update({'name':'hw'},{'name':'xz'})//更新一个数据替换db.hw.update({'name':'hw'},{$set{'name':'xz'}})//更新一次数据更新db.hw.update({'name':'hw'},{'name':'xz'},{multi:true})//更新所有data//删除集合数据db.hw.remove({'name':'hw'},{justOne:true})//删除一条数据db.hw.remove({'name':'hw'},{justOne:false})//删除所有数据//集合重命名db.user.renameCollection("hw");renameusertohw//查询数据$lt--小于$lte--小于等于$gt--大于$gte--大于等于$ne--不等于$in$nin--是否在此范围内$where查询函数_id默认显示,如果不显示,设置值为0sort()排序,参数为1升序-1降序count()统计查询结果的个数也可以放入查询参数的计数distinct()消除重复数据db.hw.find({age:{$gte:18}})db.hw.find({age:{$in:[12,32,21]}})db.hw.find({$and:{age:{$in:[12,32,21]},{age:{$gte:18}}}})db.hw.find({age:{$gte:18}}).skip(3).limit(2)db.hw.find({age:/^abc/,name:{$regex:'123$'}})db.hw.find($where:function(){returnthis.age<=19})db.hw.find({age:{$gte:18}}).sort({age:1})db.hw.distinct({age:{$gte:18}})3.索引//创建唯一值索引db.hw.ensureIndex({name:1},{'unique':true})//1升序-1降序db.hw.find({name:'he'}).explain('executionStats')//获取时间//查看集合中的所有索引db.hw.getIndexes()//删除索引db.hw.dropIndex('name')//重建索引db.hw.reIndex()4.数据聚合//数据聚合$group分组$match过滤数据$project修改文档结构$sort排序$limit指定数量$skipskip$unwind拆分数组类型字段$pushAll$sum和$avg平均值$push向数组添加值$pop$addToSet$pull$rename$bit$首先开始$最后结束$min$maxdb.hw.aggregate({$group:{_id:'$name',count:{$sum:1},avg_age:{$avg:'$age'}}},{$project:{name:'$_id',count:'$count',avg_age:'$avg_age'}},{$match:{age:{$gt:20}}},{$unwind:{'$age',preserveNullAndEmptyArrays:true}}//true保留缺失值)5.数据备份与恢复//备份数据mongodump-hdbhost-ddbname-odbdirectory-h服务器地址-d待备份的数据库名-o备份数据库存放位置//数据恢复mongorestore-hdbhost-ddbname--dirdbdirectory-h服务器地址-d待恢复数据库实例--dir备份数据的位置六、数据监控//监控Mongostat检测数据库状态mongotopsleeptime--锁跟踪一个MongoDB例7、高级查询<,>,>=,<=这四个不用解释,最最常用最简单的db.collection.find({"field":{$gt:value}})//大于:field>valuedb.collection.find({"field":{$lt:value}})//小于:field
