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

在MongoDB中实现交叉汇总

    博客分类:
  • DB
阅读更多

   MongoDB实现交叉汇总比较困难,如果将数据取出,用Java等高级语言来汇总的话,也相当复杂。因此,可以考虑用esProc集算器辅助MongoDB完成交叉汇总。下面我们通过一个例子来看一下具体做法。

   Student集合如下:
    db.student.insert ( {school:’school1′, sname : ‘Sean’ , sub1: 4, sub2 :5 })
    db.student.insert ( {school:’school1′, sname : ‘chris’ , sub1: 4, sub2 :3 })
    db.student.insert ( {school:’school1′, sname : ‘becky’ , sub1: 5, sub2 :4 })
    db.student.insert ( {school:’school1′, sname : ‘sam’ , sub1: 5, sub2 :4 })
    db.student.insert ( {school:’school2′, sname : ‘dustin’ , sub1: 2, sub2 :2 })
    db.student.insert ( {school:’school2′, sname : ‘greg’ , sub1: 3, sub2 :4 })
    db.student.insert ( {school:’school2′, sname : ‘peter’ , sub1: 5, sub2 :1 })
    db.student.insert ( {school:’school2′, sname : ‘brad’ , sub1: 2, sub2 :2 })
    db.student.insert ( {school:’school2′, sname : ‘liz’ , sub1: 3, sub2 :null })

   希望能够统计出如下的交叉表:每行一个学校,第一列是sub1成绩为5的人数,第二例是sub1成绩为4的人数,以此类推。



 

   集算器的脚本如下:



 

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

   A2: 使用find函数从MongoDB中取出集合student,形成游标。esProc在find函数中采用了和mongdb的find语句一样的参数格式。esProc的游标是分批读取和处理数据,可以避免数据量过大,内存出现溢出的情况。这里数据量不大,所以用fetch函数一次取出。

   A3:首先按照学校分组。

   A4:学校分组之后,每组内部按照[1,2,3,4,5]的序列对齐分组,再求每一个对齐分组的长度。

   A5:对A4的长度数按照需求放入相应的位置,生成结果排列。

   结果如下:



 

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

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

  • 大小: 15.9 KB
  • 大小: 53.9 KB
  • 大小: 16.2 KB
0
0
分享到:
评论

相关推荐

    Thinkphp使用mongodb数据库实现多条件查询方法

    在Thinkphp中实现多条件查询时,可以使用框架提供的查询构建器(Query Builder),但是当涉及到MongoDB的复合查询时,比如需要使用AND和OR逻辑运算符进行多条件筛选,官方文档中提供的方法可能不足以满足需求。...

    Spring Data MongoDB中文文档

    - **Spring Data MongoDB** 提供了事件机制,可以在数据访问过程中触发特定的事件,例如 `beforeSave`, `afterLoad` 等。 - 事件处理可以用来执行额外的逻辑,比如日志记录、数据验证等。 #### 十、异常处理 - **...

    spring mongodb 中文文档

    Spring Data MongoDB 提供了一组高级抽象,用于在Java 应用程序中操作MongoDB 数据。它包括Repository 模式,使得与MongoDB 的交互变得简单且类型安全。 3. **配置MongoDB** 在Spring Boot 应用中,可以通过...

    MongoDB 增删改查 实现 C# 命令汇总

    在MongoDB中,增加数据通常涉及到向集合(类似SQL中的表)中插入文档(JSON格式的数据)。在C#中,我们可以使用`MongoDB.Driver`库来完成这个任务。例如: ```csharp using MongoDB.Driver; var client = new ...

    MongoDB参考手册.zip_MongoDB_T6U_mongodb中文手册

    MongoDB是一款分布式文档型数据库,以其灵活性、高性能和易扩展性在现代Web开发中占据了重要地位。MongoDB中文手册是开发者必备的参考资料,它详细介绍了MongoDB的各种操作和语法用法,帮助用户深入理解并有效利用这...

    django+mongodb+hui 实现的后台管理系统.zip

    django+mongodb+hui 实现的后台管理系统.zipdjango+mongodb+hui 实现的后台管理系统.zipdjango+mongodb+hui 实现的后台管理系统.zipdjango+mongodb+hui 实现的后台管理系统.zipdjango+mongodb+hui 实现的后台管理...

    mongodb-tree-structure:在MongoDB中实现树结构

    在MongoDB中实现树结构 一种使用一个MongoDB集合实现树结构的方法。 显示模式设计和CRUD概念的一些基本思想。 在示例代码中使用和 。 [警告] 根据我很少的经验,这只是一种实现树结构的方法。 这可能不是您情况下的...

    基于MongoDB实现商品管理系统视频.zip

    在这个“基于MongoDB实现商品管理系统”的视频教程中,你将深入学习如何利用MongoDB构建一个完整的商品管理系统。 首先,从"001_mongodb的下载安装和测试.mp4"开始,视频会引导你进行MongoDB的下载、安装和基本功能...

    java+MongoDB实现存图片、下载图片的方法示例

    在本文中,我们将使用java作为开发语言,并配合MongoDB数据库来存储和下载图片。java是一种广泛使用的编程语言,known for its platform independence和large community support。MongoDB是一种NoSQL数据库,known ...

    MongoDB 3.6 中文文档

    MongoDB 3.6 中文文档

    mongodb在java中小试牛刀

    MongoDB在Java中被广泛用于构建高性能、可扩展的数据存储解决方案。MongoDB是一个NoSQL数据库,以其灵活性、可伸缩性和高性能而闻名。在Java中使用MongoDB,我们可以借助Spring Data MongoDB框架,它提供了一种简化...

    基于MongoDB数据实现图书管理系统.zip

    基于node.js、vue、mongodb等技术构建的web系统,界面美观,功能齐全,适合用作毕业设计、课程设计作业等,项目均经过测试,可快速部署运行! 基于node.js、vue、mongodb等技术构建的web系统,界面美观,功能齐全,...

    mongoDB实现BOM表多试图转换

    在本文中,我们将深入探讨如何利用MongoDB和Java来实现BOM表的多视图转换。 首先,理解BOM表的基本概念。BOM是制造业中用于描述产品结构的工具,它列出了一项产品所需的所有组件和子组件,以及它们的数量关系。在...

    NoSQLBooster for MongoDB

    MongoDB是一种流行的开源、分布式、文档型数据库,它在处理大量数据时提供了高可用性和可扩展性。NoSQLBooster for MongoDB是一款强大的管理工具,专为优化MongoDB操作而设计,其前身为Mongobooster,是开发人员和...

    使用scrapy,redis,mongodb实现的一个分布式网络爬虫[整理].pdf

    数据存储使用 MongoDB 来实现, MongoDB 中存储了抓取的数据,并使用 GridFS 来存储大文件。 分布式爬虫的实现 分布式爬虫的实现主要包括三个部分:爬虫引擎、任务队列和数据存储。爬虫引擎使用 Scrapy 框架来抓取...

    mongodb-测试数据

    7. **安全和权限管理**:测试数据也可能涉及到用户角色和权限的设定,让你了解如何在MongoDB中实现安全性。 在使用这些测试数据时,你应该逐一实践每个操作,对比预期结果,理解MongoDB的工作原理。同时,你也可以...

    mongodb实战中文pdf

    在MongoDB中,这些操作通过简单的命令和API实现,例如`insertOne()`、`find()`、`updateOne()`和`deleteOne()`。 3. **查询语言**:MongoDB的查询语言(MQL)支持丰富的查询选项,包括条件查询、排序、分组和聚合,...

    mongodb的实现类及实现接口(包含jar包)

    在实际开发中,这样的设计可以帮助开发者利用已有的JDBC经验快速上手MongoDB,并且通过自定义接口可以灵活地切换不同的MongoDB操作实现,比如更换不同版本的MongoDB驱动或者引入其他的MongoDB操作工具。 总结来说,...

    mongodb的java驱动实现简单示例

    在本示例中,我们将深入探讨如何使用Java驱动实现与MongoDB的交互。 首先,确保已经在项目中引入了MongoDB的Java驱动依赖。通常,这可以通过Maven或Gradle完成。在Maven的`pom.xml`文件中,添加以下依赖: ```xml ...

Global site tag (gtag.js) - Google Analytics