mongodb学习提高
文章平均质量分 54
最接近关系型数据库的非关系型数据库。
Tatum_99999
java开发
展开
-
mongodb副本集中其中一个节点宕机无法重启的问题
2-8日我还在家中的时候,被告知mongodb副本集中其中一个从节点因未知原因宕机,然后暂时负责代管的同事无论如何就是启动不起来。 当时mongodb的日志信息是这样的: 实际上这里这么长一串最重要的信息应该是在后边几行:2017-02-08T17:10:28.754+0800 I REPL [rsBackgroundSync] replSet our last op ti原创 2017-02-14 12:54:50 · 6190 阅读 · 10 评论 -
mongodb副本集搭建过程中的问题和解决技巧
在我以往的认知中,一个系统一旦正式上线,多半不会轻易的迁移服务器,尤其是那种涉及到多个关联应用,涉及到多台硬件服务器的系统,因为这种迁移将是牵一发而动全身的。 但是,却仍然有这种情况存在,就如我这几天主要负责的事,就是一个系统的全部服务器迁移中的部分机器迁移,还有一部分由别人负责。 这个系统涉及到flume数据采集,storm数据分析,rabbitmq消息分发,ehcache缓存提升系统性能,原创 2016-12-15 11:14:36 · 2995 阅读 · 0 评论 -
mongodb命令行group分组和java代码中group分组
group分组统计是数据库比较常用的功能,mongodb也不例外。不过相对于普通的增删改查,group操作就略微麻烦一些,这里对group在shell中的操作、使用java原生代码操作以及集成spring进行操作进行一个简单的归纳总结,分组的途径和方法应该都有多种,这里每一样只举一例。本例中数据源如下:需要使用group实现的目的是:按年龄分组统计出每一组的数量。1、mongo shell中执行如原创 2016-07-19 08:45:35 · 16712 阅读 · 2 评论 -
mongodb3.0分片及java代码连接操作测试(开启用户验证)
最近抽时间搭建了一下mongodb简单的分片,整个过程还算是蛮顺利,只不过在用户验证这一块遇到了一些问题,好在最后终于搞定。一、服务器搭建过程:1、安装四个mongodb:一个作为config、一个作为mongos、另外两个作为主要数据存储的服务器(机器ip192.168.0.201),如图:分别对应图中被红框框起来的mongoconf、mongos、mongo1、mongo2(解压安装,安装过程原创 2016-07-18 10:51:00 · 11625 阅读 · 2 评论 -
linux shell中获取mongodb最大连接数、内存使用情况等
前两天接到了一个新的需求,需要在linux shell脚本中监控到mongodb最大连接数、内存使用情况等。但是我对于linux shel很不了解,只是会一些简单常用的linux的操作而已,只要一顿狂搜,最终多番尝试下终于获取到这些值。成功的步骤大致如下:0、./mongostat -u admin -p admin --authenticationDatabase admin -n 1 --js原创 2016-07-14 14:41:12 · 5966 阅读 · 4 评论 -
mongodb3.0副本集搭建补充~~非admin数据库的用户权限
之前有搭建mongodb3.0的副本集,不过当时直接使用的admin数据库,用户也是直接给的root。链接:http://blog.csdn.net/tuzongxun/article/details/51723259最近想要把数据移到非admin数据库上,便重新以非admin库创建用户,过程大致和之前的一样,但创建用户的时候还是遇到了一些问题,主要是在用户角色和权限上。我搭建过程中参考了下边的用原创 2016-07-11 17:03:07 · 7165 阅读 · 7 评论 -
mongodb去除重复的数据(二)
前天因为工作需要,开始着手对数据库中两千多万的数据中其中一个字段重复的数据进行去重。原本使用一些测试的数据测试后,前天写的那个方法是可行的,但是当面对这个两千万的真实数据时,我却发现这方法有些不顶用了,最终只好又经过若干次的尝试,总算成功去重。最终总结一下整个过程:1、这个方法就是上一篇所讲的,利用mongodb的游标dbcursor和while循环的方式。var res=db.test.find原创 2016-07-01 09:47:30 · 19013 阅读 · 2 评论 -
mongodb去除重复的数据
今天出现了一个新的需求,有个部门需要拿到mongodb中的数据,要求去掉其中一个字段内容相同的数据。虽然mongodb中有distinct来去重,但是和mysql的distinct不同的是,mysql中能用distinct * 返回整条记录的信息,而mongodb的distinct我却只是返回去重的那个字段的数据(或许mongodb也可以返回整条,但是我不知道)。mysql中的distinct返回原创 2016-06-28 11:18:37 · 41403 阅读 · 10 评论 -
把mmapv1存储引擎存储的mongodb3.0数据库数据复制到WiredTiger存储引擎的mongodb3.2中
mongodb3.0在mmapv1的存储引擎基础上添加了一个新的存储引擎WiredTiger。但是3.0的默认存储引擎依旧是mmapv1,因此我们项目之前也就用的默认方式。但是mongodb更新实在太快,转眼间,从3.0直接跳到3.2,默认的存储引擎也改成了WiredTiger。据说这个引擎具有占用磁盘空间更小,占用内存空间更小,查询效率更高等一系列特点。为了防患于未然,今天尝试了一下把3.0的数原创 2016-06-27 17:16:17 · 6527 阅读 · 0 评论 -
Mongodb3.0.5副本集搭建及spring和java连接副本集配置
这是去年写的一篇文档,最近突然发现并没有发不出来,因此现在补上,希望能对某些朋友有所帮助。因为当时记录时没有截图,因此这里看起来可能就比较单调。一、基本环境:mongdb3.0.5数据库spring-data-mongodb-1.7.2.jarmongo-java-driver-3.0.2.jarlinux-redhat6.3tomcat7二、搭建mongodb副本集:1、 分别在三台linu原创 2016-06-20 21:05:21 · 20830 阅读 · 0 评论 -
使用mongoVUE删除大量数据的情况下失效问题
昨天有一个系统出现了问题,导致半夜时大量的错误数据产生,早晨一早接到上边通知让把这些数据尽数删除。不可否认在数据操作时mongoVUE更加直观,因此一般情况下我也都是使用这个工具,但是今天却出现了问题。首先我查询了一下需要删除的数据的数据量,查询操作正常,如图:然后一样的条件执行删除remove操作,结果就卡在那里许久之后弹出错误提示框如下:几次尝试后均是如此,于是我只好改道使用系统中的命令行进入原创 2016-06-13 10:32:04 · 10129 阅读 · 3 评论 -
mongodb一些使用技巧或注意事项记录
1、有的时候需要删除指定字段那一列,使用update操作。例如要删除name这一列:query json:{"name":{$exists:true}} update json:{$unset:{"name":""}}2、数据导出,在mongodb的bin目录执行mongoexport命令并设定相关的参数,例如:./mongoexport -h 192.1原创 2016-05-23 12:20:39 · 4614 阅读 · 17 评论 -
使用spring连接及操作mongodb3.0
前边有一篇记录过不使用spring,直接在java代码中连接和操作mongodb数据库,这里就紧随其后记录一下使用spring的情况下,在java中简单操作mongodb。maven导包配置:因为涉及了sping以及springmvc,因此也需要导入它们相关的包:<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns原创 2016-11-25 13:12:20 · 34470 阅读 · 13 评论 -
不使用spring的情况下用java原生代码操作mongodb数据库的两种方式
由于更改了mongodb3.0数据库的密码,导致这几天storm组对数据进行处理的时候,一直在报mongodb数据库连接不上的异常。 主要原因实际上是和mongodb本身无关的,因为他们改的是配置文件的密码,而实际上这个密码在代码中根本就没有使用,他们在代码中已经把用户验证信息写死。 在协助他们解决这个问题的时候,我看到他们代码中在和mongodb数据库交互时使用了原创 2016-04-21 18:18:18 · 9613 阅读 · 0 评论 -
修改mongodb3.0副本集用户密码遇到的坑
最近公司对项目安全方面的问题很是重视,进行了多次各种安全漏洞的扫描,于是乎就扫到了mongodb弱口令的问题。在项目部署初期,因为大家对这个都不是特别重视,大概是因为觉得反正是内网项目吧,所以mongodb数据库的用户名和密码就都是admin。这次扫到弱口令之后,要求解决这个问题,于是任务便分到了我的头上。遵循强口令的标准,我把admin改成了由大写字母、小写字母、数字和特殊字符共同组成的密原创 2016-04-18 17:35:19 · 11551 阅读 · 2 评论 -
mongoVUE对mongodb常用的基础操作
一、 连接mongodb服务端:1、 双击mongoVUE,进入如下图所示界面:2、 点击上图中的“+”,出现如下图,输入要连接的mongodb服务器的ip、端口、用户名、密码以及要连接的数据库等:3、 信息填写完成后点击“test”,如果成功,则会弹出如下界面,之后点击“save”;如果不是如下界面,代表输原创 2015-12-17 18:24:11 · 6691 阅读 · 0 评论 -
java连接mongodb的一个奇葩问题及奇葩解决方式
昨天在eclipse中编写代码,本来连接mongodb进行各项操作都是正常的,但是有一会儿突然之间就没法连接了,还一直抱错,错误如下:信息: Cluster created with settings {hosts=[192.168.0.4:27017], mode=SINGLE, requiredClusterType=UNKNOWN, serverSelectionTimeout='30000原创 2015-11-06 09:34:37 · 39235 阅读 · 14 评论 -
mongdb3.0用户验证问题
1、 用户验证方式更改:Mongodb2.6的默认用户验证方式是:MONGODB-CRMongodb3.0的默认用户验证方式是:SCRAM-SHA-1 因为新的验证方式在spring和java中还有一些问题,因此现在项目中3.0的数据库依旧使用之前的验证方式。 把3.0的用户验证改为MONGODB-CR,过程如下:(1)、进入mongoshell,mongodb的bi原创 2015-09-08 10:23:55 · 1611 阅读 · 3 评论 -
linux下mongodb定时备份指定的集合
目标:把一台linux机上mongodb的数据定时备份到另一台机上:过程: 一开始打算使用mongoexport和mongoimport,但是总是会报“\x00”字符串不能识别的问题,后来就改成了mongodump和mongorestart,成功实现目标。 (\x00的问题还在寻找解决办法);脚本代码:#获取系统时间并转换成毫秒数current=`date "+原创 2015-09-02 10:59:50 · 2049 阅读 · 1 评论 -
linux系统中实现mongodb3.0.5数据库自动备份
最近两天,因公司业务需要,要定期备份mongodb数据库中的数据。查了很多资料后,发现mongodb似乎并没有自带的定时备份功能,于是只好转移目标到linux系统的定时任务上,于是学习并使用了crontab,并成功定时备份。参考文档:http://blog.itpub.net/519536/viewspace-659881/ http://www....原创 2015-08-28 10:34:28 · 2050 阅读 · 0 评论 -
使用mongo-java-driver3.0.2.jar和mongodb3.0在java代码中的用户验证4
以下是使用mongo-java-driver3.0.2.jar和mongodb3.0.4在java代码中的用户验证:ServerAddress sa = new ServerAddress(host, port);List mongoCredentialList = new ArrayList();mongoCredentialList.add(MongoCredential.create原创 2015-08-14 09:00:12 · 2220 阅读 · 5 评论 -
spring4.0整合mongodb3.0.4项目实践(用户验证)
我们的项目用到了spring框架和mongdb数据库,随着mongodb升级到3.0已有半年时间,我们也开始随之升级,但是3.0的用户验证有所更改,导致原来的很多配置无法再用。经过几天的尝试后,终于成功的用spring配置验证。升级用了两个新的jar包,分别是pring-data-mongodb1.7.2(http://pan.baidu.com/s/1bnkAA67)和mongodb-j原创 2015-08-13 08:16:58 · 8825 阅读 · 1 评论 -
linux虚拟机中安装mongodb
今天在linux虚拟机中安装了mongodb数据库,安装过程主要参照了网上的一片文档,大部分地方都没有多大区别,只是在某些细节上有所改变。我参考的文档是:http://my.oschina.net/MrMichael/blog/266501?p=11. 参考文档中的第一步下载安装包,原文:mongodb-linux-x86_64-2.2.7.tgz;而我:mo...原创 2015-05-06 15:44:52 · 5894 阅读 · 0 评论 -
【mongodb系统学习之十二】mongodb修改数据
十二、mongodb修改数据:update 1)、修改数据库数据:update;语法 db.collectionName.update({},{},boolean,boolean); 2)、update共有四个参数,其中后两个是可选项; 第一个参数是要修改的文档的匹配条件,第二个是要替换的新文档; 第三个参数原创 2015-07-30 11:42:41 · 2190 阅读 · 0 评论 -
【mongodb系统学习之十一】mongodb删除数据
十一、mongodb删除数据: 1)、删除全部文档:remove,语法db.collectionName.remove({});小括号里边必须要有条件,否则不成功;如果只是一个空的{},则会删除集合内所有文档数据; 2)、按条件删除文档:remove删除数据的时候,不删除源数据;逻辑删除,不删除集合;使用showdbs可以看到数据库占用的内存与删原创 2015-07-30 11:12:32 · 2859 阅读 · 0 评论 -
【mongodb系统学习之三】进入mongodb shell
三、进入mongodb shell(数据库操作界面): 1)、在mongodb的bin目录下输入./mongo,默认连接test数据库,连接成功会显示数据库版本和当前连接的数据库名,如图: 2)、也可以进入时不连接任何数据库,./mongo –nodb,这样就不会连接任何数据库,可以用db命令查看当前数据库,如图:原创 2015-07-15 13:04:42 · 4392 阅读 · 0 评论 -
【mongodb系统学习之十】mongodb查询(二)
5)、常用查询条件: a)、比较操作符:“$lt”,“$lte”,“$gt”,“$gte”,分别是,,>,>=; b)、不等于:“$ne”; c)、查询一个键的多个值:“$in”;里边的数据可以是不同类型; d)、$or:可以查询不同键,也可以查相同键:原创 2015-07-23 19:15:14 · 895 阅读 · 0 评论 -
【mongodb系统学习之十】mongodb查询(一)
十、mongodb查询:find ;查询时条件中不能引用文档中其他键的值; 1)、查询数据库全部数据:语法db.collectionName.find();默认只显示前20条,如图: 2)、按条件查询数据:语法db.collectionName.find({“key”:value});原创 2015-07-23 19:06:59 · 914 阅读 · 0 评论 -
【mongodb系统学习之九】mongodb保存数据
九、mongodb保存数据: 1)、插入、保存数据:insert;语法db.collectionName.insert({“key”:value}),key是字段名,必须是字符串(使用有的工具,可以不加引号);插入数据时,会默认产生_id字段,一般不指定;对于一个使用use创建的新数据库,只有保存了数据以后,使用showdbs才能查看到,如图:原创 2015-07-23 18:53:36 · 1555 阅读 · 0 评论 -
【mongodb系统学习之八】mongodb shell常用操作
八、mongodb shell常用基础操作(每个语句后可以加分号,也可以不加,看情况定(有的工具中可以不加),最好是加): 1)、进入shell操作界面:mongo,上边已有演示; 2)、查看当前使用的数据库:db,上边已有演示; 3)、查看当前所有存在的数据库:showdbs;查看当前数据中所有集合,showcollections如图;原创 2015-07-23 18:45:15 · 851 阅读 · 0 评论 -
【mongodb系统学习之七】mongodb的关闭
七、mongodb的关闭: 1)、直接根据进程id杀死mongodb进程,如图(注意,kill -9要慎用,这个是强制关闭进程,可能导致文件损坏,尽量不要用,可以直接kill不加参数): 2)、如果不是用—fork方式启动,可以直接在启动界面按ctrl+c结束进程,如图(图1和图3是同一控制台,3是按下ct原创 2015-07-20 08:44:04 · 924 阅读 · 0 评论 -
【mongodb系统学习之六】mongodb配置文件方式启动
六、mongodb可以用配置文件启动,配置文件配好后,每次指定文件就好,而不用每次写一长串; 1)、创建配置文件: 2)、配置(例如指定数据存储目录,日志存储文件,后台进程,端口号等): 3)、配置文件启动(注意,此时如果配置文件指定了端口号并且不是27017,那么执行部分操作时,必须指定相同的端口号,例如mongo命令原创 2015-07-17 08:06:28 · 1815 阅读 · 0 评论 -
【mongodb系统学习之五】mongodb启动最常用参数
五、mongodb启动时其他常用参数的使用(都是选用): 1)、--logappend,指定日志的写入方式为追加,强烈建议使用; 2)、--port,指定mongodb的端口号,当不使用这个参数的时候,默认是27017; 3)、--fork,使mongodb以后台进程的方式运行,当使用这个参数启动以后,可以在同一个终端中进行其他操作,比如ps、原创 2015-07-16 07:58:28 · 1163 阅读 · 0 评论 -
【mongodb系统学习之四】查看mongodb进程
四、查看mongodb进程(可以配合启动和关闭使用): 1)、方法一:直接查看mongodb进程是否已经存在(用上面的方式启动后,需要另开一个窗口操作):ps –ef|grepmongodb, 如图: 2)、方法二:在bin目录下执行mongo命令看能否成功进入mongodbshell操作原创 2015-07-15 13:11:16 · 10520 阅读 · 0 评论 -
【mongodb系统学习之十】mongodb查询(三)
6)、特殊类型的查询: A)、查询键为null的文档:查询时,如果按常规的key:null的方式做条 件,不仅会匹配到值为null的,还会匹配到不存在这个键的;如果只是要值为null的文档,就必须使用$exists和$in; B)、正则表达式查询:/aaa/i,其中i是正则表达式标志,这个标志可有可无;没有这个标志时,还可以匹配他本身(key的值就是正则表达式);原创 2015-07-28 08:53:49 · 1032 阅读 · 0 评论 -
【mongodb系统学习之二】mongodb的启动
二、mongodb的启动: 1、在mongodb2.6.9的文件夹中建立data目录、logs目录以及 logs目录下的mongodb.log文件,如图: 2、进入到mongodb的bin目录中执行mongod命令,并指定相关的参数,如最简单的dbpath(数据存储目录)、logpath(日志存储目录) ./m原创 2015-07-14 08:22:10 · 1007 阅读 · 0 评论 -
【mongodb系统学习之一】mongodb的简单安装
linux中mongodb的安装(最简单的): 1、下载mongodb安装包,这里用mongodb-linux-x86_64-2.6.9.gz 提供一个下载地址:http://pan.baidu.com/s/1gdhci91(百度云) 如图: 2、解压安装包: 在控制台输入命令原创 2015-07-13 12:40:21 · 906 阅读 · 0 评论