做为一个作底层及后台研发的,最近对NoSQL却产生了浓厚的兴趣,加入了一个DBA群,听说北京排的上号的DBA都在里面,然而里面基本都是Oracle系的,MySQL和MongoDB系的少之又少。学习靠不得别人,要和Oracle大佬们撕比尚需时日。php
废话少说,在抱怨关系型数据库的死板及开发效率,力推NoSQL以后,NoSQL的表明之一MongoDB也受过一些质疑,好比《Don't use mongoDB》一文。然而NoSQL的应用却仍是没有停下,好比滴滴就是NoSQL。在去IOE的大趋势下,阿里选的是MySQL,大部分公司基本也选的是MySQL(MySQL比MongoDB早)。大公司确定不太愿意,或者主动向新的数据库迁移,由于代价太大,并且也因为公司及数据规模也必然趋于保守选择(最近Oracle的盛会上看到刚发布的sharding特性,然而通常NoSQL早就支持了)。mongodb
为何要向MongoDB迁移,以及迁移会有带来什么问题恐怕只有亲身作过的大牛才能回答。通常的说法是由于NoSQL更适合于集群,大多数NoSQL的研发动机都是为了适应集群,NoSQL不像关系型数据库那样死板,比较轻量级。数据库
建立数据库并插入,MongDB是文档型NoSQL数据库,集合至关于关系型数据库中的表,文档至关于一行数据。语法与JavaScript相似。下面是一些基本的增删改查操做。学习
建立数据库ui >Use myfirstdbspa 建立集合命令行 >db.createCollections(“Company”);ip 插入一条数据ci >db.Company.insert({uid:1, username: “Tom”, age: 25});开发 >WriteResult({ "nInserted" : 1 }) |
查询记录:
查询整个集合中的记录 >db.Company.find(); 查询指定字段的记录 >db.Company.find({username: “Jerry”}); |
修改记录:
>db.Company.update({username: “Truman”}, {$set: {age : 50}}); |
删除记录:
>db.Company.remove({uid: 1}); |
在Windows下尝试搭建一个学习实验环境碰到的问题。
1.服务没法启动的问题
采用源码包可能存在问题,因此直接使用安装程序,即.msi文件。学习MongoDB解决的第一个问题就是如何启动MongoDB服务并进入数据库。MongoDB安装完成后启动:
$net start mongdb |
这时可能会报没法启动服务的错误。Windows下能够先打开任务管理器,查看服务中是否已经有了MongoDB,若是有则能够先卸载MongoDB,以后从新安装,再net start mongodb,若输出MongoDB服务已经启动,则执行mongo.exe便可进入数据库命令行。
2.服务没法启动
从控制面板中没法启动服务,报错,网上说的都不靠谱。
015-10-29T20:14:48.328+0800 W NETWORK Failed to connect to 127.0.0.1:27017, reason: errno:10061 因为目标机器积极拒绝,没法链接。 |
卸载mongodb服务并重装后问题解决,然而这显然不行,必须以热方式解决。后来发现mongodb安装数据目录下会有一个.lock文件,删除文件之后重启服务就能够启动了,但为何会这样还须要研究。Net start mongodb重启服务。
以上纯属我的浅见,初学欢迎探讨指正~