MongoDB 是目前在IT行业非常流行的一种非关系型数据库(NoSql),其灵活的数据存储方式备受当前IT从业人员的青睐。这里主要讲如何在windows平台下安装MongoDB。
方法/步骤
-
登陆mongodb官网点击右侧的下载
-
选择windows平台,如图点击需要的zip文件下载(笔者这里主要讲诉zip文件的安装)
legacy版本可以用于旧版本系统下安装,这里不推荐。
-
将zip文件解压放到盘符的根目录(如C:或D:),为了方便建议文件夹命名尽量简短如(d:\mongodb)
-
创建数据库文件的存放位置,比如d:/mongodb/data/db。启动mongodb服务之前需要必须创建数据库文件的存放文件夹,否则命令不会自动创建,而且不能启动成功。
-
打开cmd(windows键+r输入cmd)命令行,进入D:\mongodb\bin目录(如图先输入d:进入d盘然后输入cd d:\mongodb\bin),
输入如下的命令启动mongodb服务:
D:/mongodb/bin>mongod --dbpath D:\mongodb\data\db
-
mongodb默认连接端口27017,如果出现如图的情况,可以打开http://localhost:27017查看(笔者这里是chrome),发现如图则表示连接成功,如果不成功,可以查看端口是否被占用。
-
其实可以将MongoDB设置成Windows服务,这个操作就是为了方便,每次开机MongoDB就自动启动了。
如图在d:\mongodb\data下新建文件夹log(存放日志文件)并且新建文件mongodb.log
在d:\mongodb新建文件mongo.config
-
用记事本打开mongo.config输入:
dbpath=D:\mongodb\data\db
logpath=D:\mongodb\log\mongo.log
-
用管理员身份打开cmd命令行,进入D:\mongodb\bin目录,输入如下的命令:
D:\mongodb\bin>mongod --config D:\mongodb\mongo.config
如图结果存放在日志文件中,查看日志发现已经成功。如果失败有可能没有使用管理员身份,遭到拒绝访问。
-
打开cmd输入services.msc查看服务可以看到MongoDB服务,点击可以启动。
-
mongodb成功启动,接下来就该进行一系列操作了。我们再开一个cmd,输入【mongo】命令打开shell即mongodb的客户端,默认连接的是“test”数据库,我这里设置集合(表)为student。图一:
1. 添加insert
语法:db.集合.insert({“Col1”:”列值1”,”Col2”:”列值2”,…,”Coln”:”列值n”})
2. 查找find
2.1全部查询
语法:db.集合.find()
2.2条件查询
语法:db.集合.find({“Col1”:”列值1”,”Col2”:”列值2”,…,”Coln”:”列值n”})
操作示例:添加+查找
注意:“_id"这个字段是数据库默认给我们加的GUID,目的是保证数据的唯一性。
3.修改
3.1全部修改update
语法:db.集合.update({“Col”:”列值”},{”Col2”:”列值2”,…,”Coln”:”列值n”})
注意:
第一个参数{…}为“查找的条件”,第二个参数{…}为“要更新的值”;
Update()为全部修改,第二个参数中需要包含全部的”字段”,否则更新后会造数据的丢失,具体影响请见下图示例。操作示例:全部修改+错误实例
3.2.局部修改
Mongodb中为局部修改提供了两个修改器: $inc 和 $set。
① $inc修改器
$inc即increase的缩写,自增$inc指定的值,如果“文档”中没有此key,则会创建key。语法:db.集合.update({"col1":"列值1"},{$inc:{"col2":"列值2",...,"coln":"列值n"}}
② $ set修改器
直接将对应的数据替换为$set指定的值。
语法:db.集合.update({"col1":"列值1"},{$set:{"col2":"列值2",...,"coln":"列值n"}})
操作示例:局部修改+高级修改
3.3 upsert操作
Upsert=update+insert,智能判断更新或添加,所以我更愿意称之为高级修改。也就是说:如果查到了文档直接更新,否则在数据库里面新增一条。 将update的第三个参数设为true即可。操作示例见上图。
语法:db.集合.update({"Col":"列值"},{$inc:{"Col2":"列值2",…,"Coln":"列值n"}},true)
3.4批量修改
在前面几个的基础上进行改进,不在多做解释。
语法:db.集合.update({"Col":"列值"},{$inc:{"Col2":"列值2",…,"Coln":"列值n"}},true,true)操作示例:批量修改
4.删除remove
语法:db.集合.remove()
db.集合.remove({"Col":"列值"},{"Col2":"列值2",…,"Coln":"列值n"})操作示例:删除
(5~6为高级操作,不做详细介绍)
5.分组查询group操作示例:分组查找
6.除重distinct
7.统计count操作示例:除重+统计
以上是我操作后的实例分享,再次操作一遍感觉收获的更多。还记得刚开始动手操作的时候,关于修改部分只接触了全部修改,当时那时候还以为跟其他数据库操作一样修改就是一个update()方法,所以实践的时候就直接进行了部分修改,后果就像图中显示的一样造成了数据丢失。当时还在想“不会吧,难道只修改一两个字段还要把所有的都写上吗?这也太麻烦了吧。。。”,后来跟旁边的大神周响师哥讨论他告诉我mongodb修改有两种方法也就是上文提到的mongodb专门封装的部分修改的方法。当时貌似当时走了弯路,不过现在想想真的是弯路吗?