`
datamachine
  • 浏览: 163517 次
社区版块
存档分类
最新评论

MongoDB之数位比较

    博客分类:
  • DB
阅读更多

   Mongodb脚本解决复杂问题的计算能力有限,直接使用时较为吃力。很多情况下需要将数据读出后在主程序中进一步完成运算,而在Java等高级语言中编写这类集合式运算也比较麻烦。这时可以用集算器esProc来辅助,这里通过一个例子来说明。

   Mongodb中有一个test集合如下:

    > db.test.find({},{“_id”:0})

    { “value” : NumberLong(112937552) }

    { “value” : NumberLong(715634640) }

    { “value” : NumberLong(487229712) }

    { “value” : NumberLong(79198330) }

    { “value” : NumberLong(440998943) }

    { “value” : NumberLong(93148782) }

    { “value” : NumberLong(553008873) }

    { “value” : NumberLong(336369168) }

    { “value” : NumberLong(369669461) }

    …

  具体的:test集合包含多个value,每个value是一个数字串。每个数字串都要和另外所有的数字串比较,找出每个数字串的最大相同数和最大不同数。如果第1行和第n行都含有数字1,就算相同数有1个,如果第1行有1第n行没有,就算不同数有1个。

  集算器代码如下:



 

   A1:连接mongodb,ip和端口号是localhost:27017,数据库是test,用户名和密码都是test。

   A2:使用find函数从mongodb中取数,形成游标。集合是test,过滤条件是空,键_id不取出。可以看出,esProc在find函数中采用了和mongdb的find语句一样的参数格式。esProc的游标支持分批读取和处理数据,可以避免数据量过大,内存出现溢出的情况。这里因为数据量不大,所以用fetch出游标的所有记录。

   A3:在A2的基础上增加两列,用来存放最大相同数和最大不同数。同时把value转成字符串。

   A4:针对A3集合循环,循环体是B4到D10。

   B4:取当前循环的value。

   C4:利用函数将value分拆成单个字符组成的序列,去掉重复的值。

   B5:对A3再进行一次内层循环。循环体是C6到D10。

   C5:如果内层循环的循环位置和外层当前位置的相等,也就是说是同一个value的话,就跳过本次内层循环,进行下一次内层循环。

   C6:取得内层循环的value。

   C7:定义两个变量same和diff,分别存放本次比较的相同数和不同数,初始值为0。

   C8:利用循环函数,在内层循环的value中逐个查找外层循环的value分拆的序列数值。如果能找到,则same自加1,否则diff自加1。

   C9、C10:将same和diff和A4中的same和diff比较,将较大的重新赋值给A4中的same和diff。

   运行结果是:



 

  需要说明的是:esProc并不包含mongodb的java驱动包。用esProc来访问mongodb,必须提前将mongodb的java驱动包(要求2.12.2或以上版,如mongo-java-driver-2.12.2.jar)放到[esProc安装目录]\common\jdbc中。

  esProc协助mongodb计算的脚本很容易集成到java中,只要增加一行A11,写成result A3即可向java输出resultset形式的结果,具体的代码参考esProc教程。同样,用java调用esProc访问mongodb也必须将mongdb的java驱动包放到java程序的classpath中。

  • 大小: 63.9 KB
  • 大小: 32.6 KB
2
2
分享到:
评论

相关推荐

    windows32位mongodb

    在Windows 32位系统上安装MongoDB,我们需要关注一些特定的事项,因为32位系统可能在内存使用上存在限制,这可能会影响到MongoDB的性能。以下是关于"windows 32位mongodb"的相关知识点: 1. **系统兼容性**:...

    mongodb2.6.6下载 64位数

    mongodb2.6.6百度盘的地址,需要 教程的联系我,官网下载很慢

    mongoDB部署.doc

    在Linux平台上部署MongoDB,首先需要下载对应操作系统的安装包,例如在64位Linux上,通常会下载.tgz格式的安装包。解压后,将文件夹移动到合适的位置,如/usr/local/mongodb。接下来,需要将MongoDB的bin目录添加到...

    mongodb学习手册.pdf

    - **大规模数据库**:由数十至数百台服务器组成的数据库集群。 对于高度事务性系统、传统商业智能应用以及复杂的跨文档级联查询,MongoDB可能不是最佳选择。 #### 四、MongoDB的工作方式 MongoDB融合了关系型和非...

    mongoDB安装包

    MongoDB安装包是一个针对Windows 32位系统的安装程序,版本为1.8.0,它是NoSQL数据库领域中的一个重要代表。MongoDB是一款开源、分布式、高性能的文档型数据库,以其灵活性、可扩展性和高性能而受到广泛欢迎。在这个...

    linux环境下mongodb配置文档及安装包

    linux环境下mongodb配置文档及安装包,安装之前一定要检查系统是多少位的,MongoDb区分位数使用 getconf LONG_BIT 命令查看

    MongoDB入门到精通

    - MongoDB 提供了丰富的查询语言,支持多种查询条件,如比较运算符、逻辑运算符等,使得开发者能够方便地获取所需数据。 6. **Map/Reduce** - Map/Reduce 是一种数据处理模型,MongoDB 支持使用 Map/Reduce 对...

    mongodb-x64-4.0.12-signed.zip

    首先,您已有一个名为"mongodb-x64-2008plus-ssl-4.0.12-signed.msi"的安装包,这是适用于64位Windows系统的版本,并且包含了SSL支持。安装步骤如下: 1. **下载安装包**:您已经完成了这一步,确保文件完整无损。 ...

    mongodb4.0_64_Linux_Windows

    在部署MongoDB 4.0时,需要考虑的因素包括硬件配置、数据量、并发用户数以及性能需求。对于Linux系统,需要配置合适的内存、磁盘空间,并根据应用需求调整系统参数。对于Windows环境,需要注意安装路径的选择,以及...

    MongoDb数据结构详解.pdf

    ObjectId由四个部分组成:4字节的时间戳(从1970年1月1日以来的秒数)、3字节的机器标识符、2字节的进程ID以及3字节的自增计数器,确保了其全局唯一性。 5. **GridFS**:对于大型文件的存储,MongoDB提供了GridFS...

    MongoDB性能测试报告

    测试环境包括Windows XP SP3和CentOS 64位系统,前者配置为32位双核CPU和4GB内存,后者配置为64位四核CPU。 在测试过程中,报告作者观察到不同索引策略对插入性能有显著影响。例如,在测试描述i2中,作者指出无索引...

    mongodb-windows-x86_64-4.4.0-signed

    标题中的"mongodb-windows-x86_64-4.4.0-signed"表明这是MongoDB针对Windows 64位操作系统的一个特定版本,4.4.0是其版本号,"signed"意味着这个安装文件已经过数字签名,确保了软件的安全性和完整性。 描述中提到...

    MongoDB权威指南(中文版)高清

    本书的两位作者均来自开发并支持开源数据库MongoDB的公司10gen。数据库开发人员可将此书作为参考指南,系统管理员可以从本书中找到高级配置技巧,其他用户可以了解一些基本概念和用例。你会发现,将数据组织成自包含...

    the little mongodb book

    最初的热情往往源于对新技术的探索和实验,而MongoDB之所以能够脱颖而出,是因为它解决了传统关系型数据库在大规模数据存储和实时处理方面的局限性。 总结而言,《小MongoDB书》不仅是一本介绍MongoDB基础知识的...

    mongodb-linux-x86_64-3.2.20.tgz

    在提供的压缩包“mongodb-linux-x86_64-3.2.20”中,包含了适用于64位Linux系统的MongoDB二进制文件。用户通常需要按照以下步骤安装和运行: 1. 解压压缩包到一个合适的目录。 2. 创建数据目录,如 `/data/db`,...

    MongoDB3.2实战笔记

    - **位数选择**:32 位版本最大支持 2GB 数据,64 位无此限制。 #### 十、对比 MySQL - **数据模型**:MongoDB 使用文档模型,MySQL 使用表格模型。 - **查询语言**:MongoDB 使用基于文档的查询语言,MySQL 使用 ...

    mongodb性能监控

    在 32 位系统中,由于内存限制,可能需要考虑升级到 64 位系统以支持更大的内存使用。 通过上述监控手段,我们可以深入理解 MongoDB 的运行状态,找出性能问题,并采取相应的优化措施,如创建合适的索引、限制返回...

Global site tag (gtag.js) - Google Analytics