⑴ 如何在Mongodb集合中统计去重之后的数据
比方说我们有个Mongodb集合,
以这个简单的集合为例,我们需要集合中包含多少不同的手机号码,首先想到的应该就是使用distinct关键字,
db.tokencaller.distinct('Caller').length
如果想查看具体的而不同的手机号码,那么可以省略后面的length属性,因为db.tokencaller.distinct('Caller')返回的是由所有去重手机号码组成的数组。
但是,这种方式对于所有情况都是满足的嘛?并不如此,如果要统计的集合记录数较大,如千万级别的,那么在这么统计的时候往往会报10044错误,提示信息“exception : distinct too big , 16mb cap”. 后面我们将通过其他方式进行解决。
另外一种方式可以使用runCommand结合distinct进行使用,
db.runCommand({"distinct":"tokencaller","key":"Caller"})
可见在values上显示了去重之后的手机号码,,看结果是一个json格式的,于是尝试了下看看能不能取出values的大小,因为如果对于大数据量的集合来说,直接显示去重的号码明显不合适,于是尝试了下面的写法:
发现是可以的,于是对大数据量使用了这种方式看看是否能取出结果,发现不存在length属性,想了想应该跟mongodb的客户端版本有关系吧,还待验证!!!
两种方式都不行,于是试了下mapRece方式,具体如下:
然后我们会发现,他会将查询出来的结果输出到一个称为“callerstatis”的结合,如下所示:
然后使用db.callerstatis.count()就可以知道有多少不同的手机号码了。
使用这种方式,我们同样在大数据量的集合上试了一下,可惜还是失败了!!!!(桑心T_T),如果有谁有好的方法,麻烦也告诉我一下,小的感激不尽啊^_^
如果您对我的技术专栏文章感兴趣并支持我继续深入的写下去,您可以扫码支持我,毕竟英雄惜英雄嘛,不管多少我都真心的感谢您,毕竟都是对我劳动成果的认可,谢谢(^_^)。。。
⑵ 大数据分析工具哪家比较好
大数据分析工具比较好的有Python数据分析、DataV数据分析、Cloudera数据分析、MongoDBMongoDB数据分析、Talend数据分析等
1、Python数据分析
Python是一种面向对象、解释型计算机程序设计语言。Python语法简洁而清晰,阅读一个良好的Python程序就感觉像是在读英语一样。能够专注于解决问题而不是去搞明白语言本身。另外具有丰富和强大的类库,python能支持几乎所有统计分析和建模的工作。
4、MongoDBMongoDB数据分析
MongoDBMongoDB是最受欢迎的大数据数据库,因为适用于管理经常变化的数据:非结构化数据,大数据常常是非结构化数据。当下时代大数据分析是非常必要的,而MongoDBMongoDB数据分析也是做得非常好的。
5、Talend数据分析
Talend作为一家提供广泛解决方案的公司,Talend的产品围绕其集成平台而建,该平台集大数据、云、应用程序、实时数据集成、数据准备和主数据管理于一体。大数据集往往是非结构化、无组织的,因此需要某种清理或转换。当下,数据可能来自任何地方。
⑶ SQLserver2005 和 mongodb的大数据量的处理
你们老抄板也是没事忽悠你啊! 你上当了 现在不是四月!
--------------------------------
MongoDB 是nosql 的一种存储数据库. 也就是说 所有业务都要转化.
而且这种分布式并没有带来什么好处.况且即使是银行,数据量是你的万亿倍,也没听说用mongodb啊!
-------------------------
这个问题其实很简单,将记录表 按时间分区 即可.
你可以网络一下 sql2005 表分区
然后你将磁盘进行镜像分区 做 分布式存储 这不比你改存储方式强啊!
学过高中数学 划分 分界点 应该很容易.
⑷ nodejs怎么快速统计mongdb中数据量
nodejs操作mongodb查询所有数据的方法:
var MongoClient = require('mongodb').MongoClient;
var DB_CONN_STR = 'mongodb://localhost:27017/wilsondb1';
var selectData = function(db, callback) {
//连接到表
var collection = db.collection('tb2');
//查询数据
var whereStr = {"name":'wilson001'};
collection.find(whereStr).toArray(function(err, result) {
if(err)
{
console.log('Error:'+ err);
return;
}
callback(result);
});
}
MongoClient.connect(DB_CONN_STR, function(err, db) {
console.log("连接成功!");
selectData(db, function(result) {
console.log(result);
db.close();
});
});
运行结果:
⑸ mongodb千万级别的数据分析怎么做
统计的话用相关分析函数,一般这种级别的数据偏向于做报表展示。不能满足需求就写代码分布式计算吧
⑹ 大数据分析工具有哪些
大数据分析工具有:
1、Hadoop:它是最流行的数据仓库,可以轻松存储大量数据。
2、MongoDB:它是领先的数据库软件,可以快速有效地分析数据。
3、Spark: 最可靠的实时数据处理软件,可以有效地实时处理大量数据。
4、Cassandra:最强大的数据库,可以完美地处理数据块
5、Python:一流的编程语言,可轻松执行几乎所有大数据分析操作。
不同类型的大数据分析是:
1、描述性分析:它将过去的数据汇总成人们易于阅读和理解的形式。使用此分析创建与公司收入、销售额、利润等相关的报告非常容易。除此之外,它在社交媒体指标方面也非常有益。
2、诊断分析:它首先处理确定发生问题的原因。它使用了各种技术,例如数据挖掘、机器学习等。诊断分析提供对特定问题的深入洞察。
3、预测分析:这种分析用于对未来进行预测。它通过使用数据挖掘、机器学习、数据分析等各种大数据技术来使用历史数据和当前数据。这些分析产生的数据用于不同行业的不同目的。
4、规范分析:当想要针对特定问题制定规定的解决方案时,会使用这些分析。它适用于描述性和预测性分析,以获得最准确的结果。除此之外,它还使用人工智能和机器学习来获得最佳结果。
⑺ 求解决,使用Spring-data-mongodb写出根据日期时间(按日、周、月、年)进行分组统计数据量,急~在线等
最近在做mongoDB的统计, 有需求是
按照一天24小时分组,
按照一周的7天分组,
按照一个月30天分组,
按照一年12个月分组统计,
mongodb 入库的时间字段是 2016-12-12 这样的字符串格式,并没有用mongodb的格式UTC,有时差问题.
思路是,只能通过mongodb的 管道 进行层层筛选, 分组的时候使用mongodb的自带函数,$substr 进行截取进行分组.
db.advPlaysDetails.aggregate([
{
$match: {advId:"1"}
},
{
$match: {playTime:{$gt: "2016-11-29",$lt:"2016-11-31" }}
},
{
$project :{new_time_stamp :{$substr :["$playTime",11,2]},"_id":0,playTimes:1,}
},
{
$group : {_id :"$new_time_stamp", playTimes : {$sum : "$playTimes"}}
}
])
$substr 第一个参数 要切割的字段, 第二个参数:从第几个字段开始切, 第三个字段:切几个.
至于统计出来, 比如,一周里,可能有一两天根本就没有数据这种情况,可以实现弄一个7天的集合或者数组,里边数据默认为0 或其他初始值. 至于一个月多少天,不能定死30,应该用Calendar自己去算
⑻ 为什么MongoDB适合大数据的存储
Mongo是一个高性能,开源,无模式的文档型数据库,它在许多场景下可用于替代传统的关系型数据库或键/值存储方式。Mongo使用C++开发,提供了以下功能:
◆面向集合的存储:适合存储对象及JSON形式的数据。
◆动态查询:Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。
◆完整的索引支持:包括文档内嵌对象及数组。Mongo的查询优化器会分析查询表达式,并生成一个高效的查询计划。
◆查询监视:Mongo包含一个监视工具用于分析数据库操作的性能。
◆复制及自动故障转移:Mongo数据库支持服务器之间的数据复制,支持主-从模式及服务器之间的相互复制。复制的主要目标是提供冗余及自动故障转移。
◆高效的传统存储方式:支持二进制数据及大型对象(如照片或图片)。
◆自动分片以支持云级别的伸缩性(处于早期alpha阶段):自动分片功能支持水平的数据库集群,可动态添加额外的机器。
MongoDB的主要目标是在键/值存储方式(提供了高性能和高度伸缩性)以及传统的RDBMS系统(丰富的功能)架起一座桥梁,集两者的优势于一身。根据官方网站的描述,Mongo适合用于以下场景:
◆网站数据:Mongo非常适合实时的插入,更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。
◆缓存:由于性能很高,Mongo也适合作为信息基础设施的缓存层。在系统重启之后,由Mongo搭建的持久化缓存层可以避免下层的数据源过载。
◆大尺寸,低价值的数据:使用传统的关系型数据库存储一些数据时可能会比较昂贵,在此之前,很多时候程序员往往会选择传统的文件进行存储。
◆高伸缩性的场景:Mongo非常适合由数十或数百台服务器组成的数据库。Mongo的路线图中已经包含对MapRece引擎的内置支持。
◆用于对象及JSON数据的存储:Mongo的BSON数据格式非常适合文档化格式的存储及查询。
自然,MongoDB的使用也会有一些限制,例如它不适合:
◆高度事务性的系统:例如银行或会计系统。传统的关系型数据库目前还是更适用于需要大量原子性复杂事务的应用程序。
◆传统的商业智能应用:针对特定问题的BI数据库会对产生高度优化的查询方式。对于此类应用,数据仓库可能是更合适的选择。
◆需要SQL的问题
MongoDB支持OS X、Linux及Windows等操作系统,并提供了Python,PHP,Ruby,Java及C++语言的驱动程序,社区中也提供了对Erlang及.NET等平台的驱动程序。