详细图解mongodb下载、安装、配置与使用

详细图解mongodb下载、安装、配置与使用

2023年7月21日发(作者:)

详细图解mongodb下载、安装、配置与使⽤ —————————简介以及优缺点————————————–mongodb是⼀个介于nosql数据库和mysql数据库之间的⼀个数据存储系统,它没有严格的数据格式,但同时⽀持复杂查询,⽽且⾃带sharding模式和Replica Set模式,⽀持分⽚模式,复制模式,⾃动故障处理,⾃动故障转移,⾃动扩容,全内容索引,动态查询等功能。扩展性和功能都⽐较强⼤。据称,写⼊百万级的数据,MongoDB基本上⼗分钟以下可以解决。虽然MongoDB是以数据库的⾝份存在,但也常有⼈将它与Redis、Memcache⽐较,可见Mongo的价值所在。缺点l 不⽀持事务操作l 空间预分配,占⽤过⼤l MongoDB没有如MySQL那样成熟的维护⼯具l ⽆法进⾏关联表外键,不适⽤于关系多的数据l 复杂聚合操作通过mapreduce创建,速度慢| 模式⾃由, ⾃由灵活的⽂件存储格式带来的数据错误| 删除数据集合后空间不会⾃动释放,只有⽤Database()去修复才能释放 - 慎⽤!优点l ⽂档结构的存储⽅式,能够更便捷的获取数据l 内置GridFS,⽀持⼤容量的存储l 内置Sharding,分⽚简单l 海量数据下,性能优越l ⽀持⾃动故障恢复(复制集)MongoDB不可⽤于较复杂的业务逻辑,不擅长较频繁的请求,特别是涉及到多线程;多⽤于不频繁请求使⽤,交互逻辑少的设计中

⼀:下载、安装、配置、使⽤为了⽅便下载,我把当时下载的这个解压包,放在百度的云盘上。1、百度链接: 密码:ctyy2、官⽅安装下载链接:点击DOWNLOAD按钮,开始下载不过值得注意的是,上次测试了最新版本,在官⽹下载安装之后没有和因此我⼜卸载了官⽹版本,使⽤解压包重新安装,解压包版本如下:有兴趣的话还是可以从官⽹下载,然后观察下差异安装过程⼀路Click Next然后 Click Install 等安装完成即可,下图安装路径,建议⾃定义⼀下,别安装在系统盘安装完成⼆:配置使⽤1. 创建⼏个⽂件夹具体如下:数据库路径(data⽬录)、⽇志路径(logs⽬录)和⽇志⽂件(logs/⽂件)2. 创建配置⽂件,⽂件内容如下:1. 启动MongoDB服务mongod –config “D:”这个是使⽤⾃⼰刚刚在上⾯配置的配置⽂件来启动服务的。注意修改成⾃⼰的⽬录位置1. 创建并启动MongoDB服务如果每次都如上操作,岂不是相当⿇烦,按照如下命令来创建并启动MongoDB服务,就可以通过windows服务来管理MongoDB的启动和关闭了mongod –config “D:” –install –serviceName “MongoDB”net start MongoDB执⾏完之后,就可以去服务⾥看是否有成功创建了然后浏览器中输⼊1. 接下来使⽤Robomongo客户端管理⼯具就可以连接,后因收购被改名为Robo 3TNice,连接成功,如下图MongoDB会默认创建admin和local库,不过刚才安装的Mongodb并不需要权限验证,如果数据安全性不需要很⾼,则可以安装不需要验证的db库,通过设置服务器之间的⽩名单做到访问安全三:安装Authorization校验的MongoDB需要注意的是:如果之前安装MongoDB时不需要 Auth,那么必须卸载MongoDB服务,进⾏重新安装,设置账号权限才⽣效!⾸先卸载之前的mongodb服务,接着删除data⽂件夹下所有东西,再清空log然后再次注册个服务的话,命令多添加个 –authmongod –config “D:” –auth –install –serviceName “MongoDB”net start MongoDB此时就可以⽤Robomongo⼯具进⾏连接试⼀下 --remove --serviceName "MongoDB"mongod --config "D:" --auth --install --serviceName "MongoDB"net start MongoDBuse User({user: "admin",pwd: "password",roles: [ { role: "root", db: "admin" } ]});exit

< 新建数据库mongo --port 27017 -u admin -p password --authenticationDatabase admin创建数据库lxkdb,当在这个数据库写⼊数据的时候,这个数据库就出现了use minily创建普通账户User({user: "minily",pwd: "password",roles: [{ role: "readWrite", db: "minily" }]});选择刚刚创建的数据库use minily然后进⾏数据库权限的认证,返回1就是认证OK,0就是认证失败。这个也是重点,在操作数据库之前要有那么⼀次的权限认证('minily','password')

新建Collection,并添加⼀条数据({name: 'zhangsan', age: 25, sex: true});在数据库minily中,插⼊⼀条数据,这个表叫studentshow collections显⽰当前数据库有的集合,也就是表()查student表全部

·以上操作在Robomongo⼯具上来实现,简直不要太爽·索引等进阶知识可以看官⽹roles ⽤户⾓⾊:1. 数据库⽤户⾓⾊:read、readWrite;2. 数据库管理⾓⾊:dbAdmin、dbOwner、userAdmin;3. 集群管理⾓⾊:clusterAdmin、clusterManager、clusterMonitor、hostManager;4. 备份恢复⾓⾊:backup、restore;5. 所有数据库⾓⾊:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase6. 超级⽤户⾓⾊:root快速启动和停⽌服务的快捷键a. net start serviceNameb. net stop serviceName最后,每次要在命令⾏使⽤mongo命令,都得进⼊到对应的bin⽬录下,这样很是⿇烦,配置个系统环境变量,⽅便直接使⽤这样就可以直接在cmd命令⾏,不需要进⾏⽬录切换,就可以直接使⽤ 命令

—————————常⽤命令以及T-SQL增删改查语句————————————–查看表基本信息:lection(‘AUDCAD’).stats() 类似于MySql的EXPLAIN倒序查询数据:lection(‘AUDCAD’).find({}).sort({field:-1})show dbs; #查看全部数据库show collections; #显⽰当前数据库中的集合(类似关系数据库中的表)show users; #查看当前数据库的⽤户信息use ; #切换数据库跟mysql⼀样db;或者e(); #查看当前所在数据库(); #显⽰数据库操作命令,⾥⾯有很多的命令(); #显⽰集合操作命令,同样有很多的命令,foo指的是当前数据库下,⼀个叫foo的集合,并⾮真正意义上的命令(); #对于当前数据库中的foo集合进⾏数据查找(由于没有条件,会列出所有数据)( { a : 1 } ); #对于当前数据库中的foo集合进⾏查找,条件是数据中有⼀个属性叫a,且a的值为n(); #当前db版本go(); #查看当前db的连接机器地址tabase(); #删除数据库增(insert)1.单条数据插⼊({“name”:”jack”,”age”:20})2.批量数据插⼊采⽤命令⾏for循环删(remove)1.不带参数会删除全部数据,且不可恢复,切记!({“name”:”joe”})改(update)1.整体更新var model = e({“name”:”jack”})=({“name”:”jack”},model)2.局部更新● $inc修改器——⽐如我们做⼀个在线⽤户状态记录,每次修改会在原有的基础上⾃增$inc指定的值,如果“⽂档”中没有此key,则会创建({“name”:”jack”},{$inc:{“age”:30}}) //年龄增加30● $set修改器({“name”:”jack”},{$set:{“age”:10}}) //年龄变为10操作 —— 如果没有查到,就在数据库⾥⾯新增⼀条,使⽤起来很简单,将update的第三个参数设为true即可。4.批量更新 —— 在mongodb中如果匹配多条,默认的情况下只更新第⼀条,那么如果我们有需求必须批量更新,那么在mongodb中实现也是很简单的,在update的第四个参数中设为true即可查(find)1.查找key=value的数据({ “key” : value }) > ({ “key” : { $gt: value } }) < ({ “key” : { $lt: value } }) >= ({ “key” : { $gte: value } }) <= ({ “key” : { $lte: value } })1 < key ({ “key” : { $ne: value } })8.取模运算,条件相当于key % 10 == 1 即key除以10余数为1的({ “key” : { $mod : [ 10 , 1 ] } })9.不属于,条件相当于key的值不属于[ 1, 2, 3 ]中任何⼀个({ “key” : { $nin: [ 1, 2, 3 ] } })10.属于,条件相当于key等于[ 1, 2, 3 ]中任何⼀个({ “key” : { $in: [ 1, 2, 3 ] } })11.$size 数量、尺⼨,条件相当于key的值的数量是1(key必须是数组,⼀个值的情况不能算是数量为1的数组)({ “key” : { $size: 1 } })12.$exists 字段存在,true返回存在字段key的数据,false返回不存在字度key的数据({ “key” : { $exists : true|false } })13.正则,类似like;“i”忽略⼤⼩写,“m”⽀持多⾏.如joe会匹配出来({ “name”:/^j/,”name”:/e$/ })14.$or或 (注意:MongoDB 1.5.3后版本可⽤),符合条件a=1的或者符合条件b=2的数据都会查询出来({ $or : [{a : 1}, {b : 2} ] })15.符合条件key=value ,同时符合其他两个条件中任意⼀个的数据({ “key”: value , $or : [{ a : 1 } , { b : 2 }] })16.内嵌对象中的值匹配,注意:””必须加引号({ “” :value })17.这是⼀个与其他查询条件组合使⽤的操作符,不会单独使⽤。上述查询条件得到的结果集加上$not之后就能获得相反的集合。({ “key”: { $not : /^$/i } })18.$where中的value,就是我们⾮常熟悉,⾮常热爱的({ $where:function(){return ==”joe”} })指定时间删除lection(‘AUDCHF’).remove({“ctm”:{$lt:1534322144}})设置过期时间(索引)Index({“createdTime”: 1},{expireAfterSeconds: 300})其中,dollection表名,expireTime是索引所在的字段,为Date格式,expireAfterSeconds表⽰0秒之后过期。该⽅式,可以传⼊⼀个过期时间到数据库中,到了指定时间,数据即删除

发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1689899966a293309.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信