Mongodb使用知识点记录
记录平时工作中在使用mongodb数据库时遇到的一些问题的记录和解决办法,Mongodb数据库相关知识的学习理解。
DreamMakers
凡办大事,以识为主,以才为辅,凡成大事,人谋居半,天意居半。
展开
-
Mongodb中使用db.collection.copyTo()方法遇到的坑,请慎用!
前几天,在工作中遇到一个需求,需要将一个集合复制一份并且在复制后的集合上进行一些后处理,当时同事使用脚本进行的处理,先使用db.collection.copyTo()进行复制集合,然后在js脚本中遍历新集合中的记录,查询出需要处理的记录并进行相应更新处理。可是当时在现网执行的时候却出现了问题,在执行db.collection.copyTo()这个命令的时候,现网出现了频繁的告警(后台做原创 2017-06-24 10:00:48 · 4960 阅读 · 1 评论 -
怎么从mongodb中按照日期导出用户数据
之所以写这篇文章,是因为之前工作中遇到一个问题,现在把相关场景简单描述一下:我们是一个客户端APP软件,具有注册和完善用户资料功能,每次有新用户注册时我们会保存这个新用户,一段时间过后,运营人员需要统计每天都有多少人注册了,又有多少人填写了用户资料信息等等,这时候就需要我们从后台数据库进行查询了。其实,刚开始想到的是写个命令,到现网库上执行一下就行了(之前需要统计的天数比较少,第一次统计的原创 2017-04-19 13:07:56 · 4552 阅读 · 0 评论 -
MongoDB Shell 常用操作命令
转载自:http://blog.csdn.net/zhangzhebjut/article/details/13316761MonoDB shell命令操作语法和JavaScript很类似,其实控制台底层的查询语句都是用JavaScript脚本完成操作的。Ø 数据库 1、Help查看命令提示helpdb.help();db.yourColl.he转载 2016-11-01 11:34:31 · 2798 阅读 · 0 评论 -
mongodb中根据集合中的字段关系返回查询结果
在工作中同事遇到个问题问我,我竟然一时还真不知道怎么处理,问题如下所示:描述:有个积分表,用于记录用户的一些积分情况,其中有两个字段,score用于记录用户当前积分,totalscore用于记录用户的历史总积分(只增不减),因为代码逻辑问题,导致现网出现了score竟然比历史总积分还要高,想找出有这种情况的那些用户,数据是保存在mongodb中的。针对这个问题,因为之前没遇到过,所以一时间原创 2016-10-25 14:31:26 · 4569 阅读 · 0 评论 -
Mongodb的亿万级数据集合中提取字段的所有不同值集合
对于互联网公司来说,随着业务的不断发展,后台保存的各种数据也会越来越多,在这篇文章中,简单讲述一下自己在工作过程中遇到的一个小的统计需求工作,希望对有需要的人有所帮助。需求:需要统计我们后台数据库(Mongodb)保存了多少用户手机号码,数据库集合中的每条记录都有一个手机号码,但是不同记录的手机号码可能是相同的,但是这里的数据库集合数据量较大,将近六七千万记录的级别。也许刚开始会想到的是d原创 2016-09-03 11:03:27 · 4702 阅读 · 0 评论 -
在MongoVUE中发现插入的时间和实际的时间相差8小时?
在Mongodb使用过程中,发现一个问题,就是我们插入Date类型时会发现保存到mongodb中的数据却晚了8个小时,这是为什么呢?我想大家在使用客户端工具如MongoVUE时,也会发现查询出来的数据也是晚了8个小时的?下面简单描述下原因。原创 2016-07-02 11:06:24 · 14495 阅读 · 2 评论 -
如何在Mongodb中实现数据超时自动删除功能?
在工作过程中,我们难免会遇到这样的问题,我们想保存一些数据,但是我们对这些数据的要求并不高,有时候往往只是想要某个时间范围内的数据,比如我们如果永远只关心从当前时间往前推半年内的数据特性,那么我们就不需要将所有数据都保存起来,因为不仅浪费磁盘空间,而且随着数据量的不断累积,其他性能也会受到影响。这时候我们迫切的需要一直方法能够在我们插入数据的时候自动的帮我们去删除我们过一段时间就不想要的数据,原创 2016-06-27 20:10:31 · 16669 阅读 · 7 评论 -
Mongodb的副本集节点角色介绍及选举过程浅析
一个副本集ReplicaSet一般由一组mongod实例组成,这组mongod实例协调配合工作,共同向外提供高可用的数据库访问服务。副本集中的不同节点虽然都是mongod实例,但是角色上却有不同,一般分为三种:主节点、副本节点和仲裁者节点。主节点:负责所有的数据库写操作,默认情况下,主节点也负责处理所有的数据库读操作;副本节点:负责同步主节点的数据操作日志更新本地数据库,从而保证副本节原创 2016-06-10 21:32:08 · 12981 阅读 · 0 评论 -
Mongodb副本集实现及读写分离
在前面的文章“Mongodb的主从模式搭建实例”中,我们对如何搭建一个主从结构的Mongodb服务器环境进行了简单的介绍。但是对于主从结构,Mongodb官方并不推荐我们使用了,可能是因为主从模式存在以下两个缺点:(1)主节点不可用之后,无法自动切换到从节点,无法确保业务访问的不间断性;(2)所有的读写操作都是对主节点的,造成主节点的访问压力较大;因此,Mongodb为我们提供了另外一原创 2016-06-04 23:21:18 · 27657 阅读 · 3 评论 -
Mongodb文档中字段是否有先后顺序之分?
在这片文章中,简单谈谈关于Mongodb中字段先后顺序的问题。Mongodb中的文档是一种Key:Value对组成的Json字符串,按理说,字段的先后顺序是不应该影响到查询操作的。我们简单做个实验,往集合中插入一条记录:db.testcollection.insert({"apple":2, "banana":3});这时候,我们通过以下两种方式查询都是一样的:第一种方式:原创 2016-06-04 20:08:16 · 13970 阅读 · 0 评论 -
Mongodb学习技术网站地址一览
下面列出一些Mongodb的学习网站,如果有需要可以到这些地方进行深入学习。http://www.mongoing.com MongoDB中文社区http://www.mongodb.org Mongo原创 2016-06-04 19:01:18 · 7945 阅读 · 2 评论 -
Mongodb中数据聚合之聚合管道aggregate
在之前的两篇文章Mongodb中数据聚合之基本聚合函数count、distinct、group>和Mongodb中数据聚合之MapReduce>中,我们已经对数据聚合提供了两种实现方式,今天,在这篇文章中,我们讲讲在Mongodb中的另外一种数据聚合实现方式——聚合管道aggregate。面对着广大用户对数据统计的需求,Mongodb从2.2版本之后便引入了新的功能聚合框架(a原创 2016-05-22 11:05:08 · 21871 阅读 · 1 评论 -
Mongodb中数据聚合之基本聚合函数count、distinct、group
在之前的文章Mongodb中数据聚合之MapReduce>中,我们提到过Mongodb中进行数据聚合操作的一种方式——MapReduce,但是在大多数日常使用过程中,我们并不需要使用MapReduce来进行操作,不然有点杀鸡用牛刀的感觉,在这边文章中,我们就简单说说用自带的聚合函数进行数据聚合操作的实现。Mongodb中自带的基本聚合函数有三种:count、distinct和group原创 2016-05-21 13:26:55 · 48525 阅读 · 0 评论 -
Mongodb中数据聚合之MapReduce
Mongodb是针对大数据量环境下诞生的用于保存大数据量的非关系型数据库,针对大量的数据,如何进行统计操作至关重要,那么如何从Mongodb中统计一些数据呢?在Mongodb中,给我们提供了三种用于数据聚合的方式:(1)简单的用户聚合函数;(2)使用aggregate进行统计;(3)使用mapReduce进行统计;今天我们首先来讲讲mapReduce是如何统计,在后续的文章中,原创 2016-05-14 21:12:46 · 9350 阅读 · 0 评论 -
Win10系统下MAVEN_HOME配置位置问题
新买了个电脑,Win10系统的,加上之前做项目都是使用的maven,所以在新电脑上装了个maven,并且配置了相关的环境变量,但是在配置环境变量的过程中出现了问题,在这里做下记录,给要装maven的人一点提示。首先自然是在maven的官网下载一个你想要的maven包,这里我直接下载的是最新版的windows压缩包3.3.9版本。解压之后将相应的maven根目录添加到了用户变量中,并且在PATH原创 2016-05-13 16:00:48 · 12942 阅读 · 8 评论 -
Mongodb中mongod启动参数说明
在这篇文章中列出mongod服务启动时能够使用的一些启动参数,并对参数的含义进行说明。Mongodb启动命令mongod参数说明mongod的主要参数有: 基本配置********************************************************************************************原创 2016-05-12 22:43:48 · 12992 阅读 · 0 评论 -
Mongodb的主从模式搭建实例
对数据库来说,为了保证数据的安全性和高可用性,往往会采用主从架构模式,对于Mongodb也是如此,这篇文章将讲述一下如何搭建一个简单的Mongodb主从架构模型。在下面的实例中,因为没有多个服务器的原因,在一台服务器上进行了实验,采用不同的端口号进行区分主从。首先我们需要的是下载Mongodb的官方版本,这里我下载的是2.4.1的Linux版本,并在Linux下进行解压,然后创建两个文件夹原创 2016-05-10 20:05:13 · 8475 阅读 · 4 评论 -
如何在Mongodb集合中统计去重之后的数据
比方说我们有个Mongodb集合,以这个简单的集合为例,我们需要集合中包含多少不同的手机号码,首先想到的应该就是使用distinct关键字,db.tokencaller.distinct('Caller').length如果想查看具体的而不同的手机号码,那么可以省略后面的length属性,因为db.tokencaller.di原创 2016-05-07 19:39:27 · 38022 阅读 · 1 评论 -
使用Javascript进行Mongodb数据库的远程操作
最近在工作中遇到了这么个问题,在软件开发过程中自己在测试服务器上创建了mongodb数据库,开发工作一切都很顺利,但是要上线时,需要提供运行脚本,以保证在现网的数据库中创建和更新数据库。该怎么做呢?以前没有学过mongodb,更没有学过脚本,于是从百度上和mongodb的官网寻找答案,原来mongodb是可以通过javascript执行命令的,而且mongodb中的指令基本都可以在js原创 2015-04-30 23:44:50 · 4759 阅读 · 0 评论 -
mongodb查询中的null和存在不存在
查询集合c中y的值为null或者不存在>db.c.find( { “y” : null } )查询集合c中y的值为null,(仅返回y的值为null的数据,不会返回不存在的)>db.c.find( { “y” : { $type : 10 } } )还有一种写法如下>db.c.find({“y”:{“$in”:[null], “$exists”:true}}原创 2015-10-05 11:07:05 · 32862 阅读 · 1 评论 -
mongodb中的remove和drop的区别
remove用于将集合中的文档删除,但不删除集合本身,也不删除集合的索引。drop不仅删除集合的文档,也会删除集合本身,同时也会删除在集合上创建的索引。原创 2015-10-05 11:10:33 · 6598 阅读 · 1 评论 -
编写JS脚本给mongodb添加一列为已有列的相关值
Mongodb是文档数据库,即我们无需在创建的时候确定文档的存储结果,可以随时添加自己想要的字段。有的时候我们在使用Mongodb的时候会遇到下面的情形,想给Mongodb集合添加一个字段,且该字段的值是已有字段的值经过某些运算逻辑得到。直接通过Mongodb客户端工具或者变成实现都不太方便,这时候我们通过js脚本来进行处理。如下所示:conn = new Mongo("i原创 2015-10-05 13:28:42 · 2873 阅读 · 3 评论 -
mongodb数据库的备份和恢复
mongoexport指令只能用于集合的导出功能,不能导出数据库,mongodb提供了一个指令用于数据库的备份,那就是mongodump。mongodump和mongorestore两个指令配合使用,用于完成mongodb数据库的备份和恢复功能。mongodump指令不会备份“local”数据库,同时在2.2版本之后由于数据格式定义的改变,导致不能用新版本的指令去恢复老版本原创 2015-10-05 13:42:42 · 1215 阅读 · 1 评论 -
mongodb数据迁移的两种方式
环境说明:bbs数据采集的数据越来越多,目前是50G,每天大概以200W的数据量增长。而当前服务器1.2上面的空间不足,需要把数据迁移到空间足够大的1.3上面去尝试了2种方式对数据进行迁移,一种是rsync,直接拉取数据;另一种是使用mongodump/mongorestore1.rsync操作步骤:1.2:[mongodb]path = /data1/mongod原创 2015-10-05 13:48:11 · 17064 阅读 · 1 评论