[教程]MongoDB 从入门到进阶 (数据检索及统计

[教程]MongoDB 从入门进阶数据检索统计 – 微博数据的整理) 下载地址: GitHub: https://github.com/magicdict/MagicMongoDBTool 这次讲解一下MongoDB的数据统计能力。 作为统计数据,这里我采集了杨幂的微博上的粉丝作为实验数据。由于最多只能一天

[教程]mongodb 从入门到进阶 (数据检索及统计 – 微博数据的整理)

 

阶跃AI 阶跃AI

阶跃星辰旗下AI智能问答搜索助手

阶跃AI 291 查看详情 阶跃AI

    下载地址:

     GitHub:   https://github.com/magicdict/MagicMongoDBTool

这次讲解一下MongoDB的数据统计能力。

作为统计数据,这里我采集了杨幂的微博上的粉丝作为实验数据。由于最多只能一天采集5000个粉丝的资料,所以,数据也只有5000条。

同时,这些资料虽然来自于User这个类,但是没有牵涉到层次结构,无法体会阶层型数据库的威力,服务器空间,也是蛮遗憾的。

下面的代码是用来采集数据的。展示这段代码,一来说明一下如何正确的使用新浪微博的API,二来说明一下,MongoDB就像一个ORM一样,直接将对象保存到数据库中了。

当然新浪微博的API你可以去这里下载,

API函数有些蛮坑人的地方,虽然方法参数中,获取粉丝资料数量可以是Int32,不过,你真的设置一个大于200的数字,程序会报错,参数类型不匹配。

我原来以为真的是参数类型的问题,但是编译没有报错。。。。最后发现,还有200的限制。。。。。既然你限制了,你就写成Byte啊。。。坑爹。。。。

btnGetFollowers_Click(object sender, EventArgs e) 2 { 3var Srv = SystemManager.GetCurrentServer(); 4if (Srv != null) 5 {); 7var oauth = new NetDimension.Weibo.OAuth(txtAppKey.Text, txtAppSrect.Text); 8bool result = oauth.ClientLogin(txtWeiBoUsr.Text, txtWeiBoPsw.Text);{11var Sina = new NetDimension.Weibo.Client(oauth);12var uid = Sina.API.Account.GetUID(););14int UserCount;15int TotalCount;16UserCount = 0;17TotalCount = 0;18 19 NetDimension.Weibo.Entities.user.Collection followers;{22followers = Sina.API.Friendships.Followers(txtSupperStarID.Text, “”, 150, UserCount, true);23if (TotalCount == 0)24 {25TotalCount = followers.TotalNumber;26 }27foreach (var follow in followers.Users)28 {29 col.Insert(follow);30UserCount++;31 }32} while (UserCount TotalCount););34 }35 }36else {);38 }39}

采集好的数据如图所示:(虽然不是个人信息,还是打马赛克吧)

[教程]MongoDB 从入门到进阶 (数据检索及统计

[看看条数:聚合 Count]

5000条记录。。。这个就不用解释了吧。聚合的Count,就是条数统计

[教程]MongoDB 从入门到进阶 (数据检索及统计

Collection对象有Count方法,直接调用就可以了。当然,Count支持条件过滤。

if (Query.QueryConditionList.Count == 0 || !IsUseFilter){MyMessageBox.ShowEasyMessage(, + SystemManager.GetCurrentCollection().Count().ToString());}else{MongoDB.Driver.IMongoQuery mQuery = MongoDBHelper.GetQuery(Query.QueryConditionList);MyMessageBox.ShowMessage(,+ SystemManager.GetCurrentCollection().Count(mQuery).ToString(),mQuery.ToString(), true);}

 

[看看有多少地区的人玩微博:聚合 Distinct]

Distinct也是比较常用的功能,同样字段的记录,只算一条。例如,我们想看看,到底多少地方的人玩微博,我们可以对用户的所在省份进行Distinct操作。

[教程]MongoDB 从入门到进阶 (数据检索及统计

一共出现36个省份的编号。100代表的是未知。31代表上海,香港服务器,11代表北京

[教程]MongoDB 从入门到进阶 (数据检索及统计

BsonArray ResultArray = (BsonArray)SystemManager.GetCurrentCollection().Distinct(strKey, MongoDBHelper.GetQuery(DistinctConditionList));

 

[看看每个省份玩微博的人数:聚合 Group]

有兴趣玩NoSQL的人,数据库都不会差,Group是干什么的,大家都知道。OK,

对于省份Group一下,然后看看Count数字吧。

由于工具还没有完成,现在暂时只提供(内置了)Count的Group功能,当然你也可以自己修改Reduce和InitFields来获得其他结果。

[教程]MongoDB 从入门到进阶 (数据检索及统计

 

 【高级功能MapReduce】

数据太少,用MapReduce。Map函数是分散给各个不同的数据实例并行做的。Reduce函数则是将各个Map函数的结果进行最后的合并统计。

[教程]MongoDB 从入门到进阶 (数据检索及统计

官方的资料:

MapReduce的东西,以后会拿出来作为单独的一个主题,这里就展示一下。。。

【Query:我只想看姓名和城市和性别】

这么多数据字段,眼睛看花了,我只想看名字和城市,还有性别(找妹纸啊)。。。。。。

[教程]MongoDB 从入门到进阶 (数据检索及统计

呵呵,上海的妹子。。。。。

[教程]MongoDB 从入门到进阶 (数据检索及统计

继续打马赛克:500人里面,女性,省份是31的,一共137人。。。。。

[教程]MongoDB 从入门到进阶 (数据检索及统计

灵活运用查询,香港虚拟主机,一切尽在掌握。

核心代码:

FindAs方法,支持查询条件,显示字段,排序,Skip指定记录数,抽出记录数。

官方资料:

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/472721.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
我的世界1.12新手攻略
上一篇 2025年11月8日 08:14:42
VSCode如何利用快捷键提升编码速度 VSCode常用快捷键大全
下一篇 2025年11月8日 08:14:44

相关推荐

  • Go语言mgo查询构建:深入理解bson.M与日期范围查询的正确实践

    本文旨在解决go语言mgo库中构建复杂查询时,特别是涉及嵌套`bson.m`和日期范围筛选的常见错误。我们将深入剖析`bson.m`的类型特性,解释为何直接索引`interface{}`会导致“invalid operation”错误,并提供一种推荐的、结构清晰的代码重构方案,以确保查询条件能够正确…

    2026年5月10日
    100
  • Python中怎样使用pymongo?

    在python中使用pymongo可以轻松地与mongodb数据库进行交互。1)安装pymongo:pip install pymongo。2)连接到mongodb:from pymongo import mongoclient; client = mongoclient(‘mongod…

    2026年5月10日
    000
  • .NET中的仓储模式(Repository Pattern)是什么?如何解耦业务逻辑和数据访问?

    仓储模式是.NET中用于分离业务逻辑与数据访问的抽象层,通过定义如IUserRepository接口并结合依赖注入,实现对数据访问的具体技术解耦;业务逻辑仅依赖接口,可通过SqlUserRepository等具体实现操作数据库,而无需知晓底层细节;该模式提升可维护性、支持单元测试、降低耦合,并可配合…

    2026年5月10日
    000
  • 解决Python 3.11环境下Motor库异步协程导入错误的指南

    本文旨在解决在Python 3.11环境中使用Motor库时遇到的`ImportError: cannot import name ‘coroutine’ from ‘asyncio’`错误。该问题通常源于Motor库版本过旧,未能适配Python 3…

    2026年5月10日
    000
  • Discord机器人“禁闭”指令的实现与优化

    本教程详细探讨了Discord机器人中“禁闭”指令(Jail Command)的实现方法与常见问题解决方案。内容涵盖了如何创建和管理“禁闭”角色、正确配置频道权限覆盖以限制用户访问、以及在移除用户角色时如何优雅地处理特殊角色(如@everyone)以避免潜在错误。通过优化代码结构和强化权限检查,旨在…

    2026年5月10日
    000
  • HTML表单如何实现白名单功能?怎样只允许授权用户?

    要实现%ignore_a_1%的白名单功能并确保只有授权用户操作,核心答案是必须依赖后端服务器进行严格的身份认证、会话管理、授权检查和数据验证,前端仅能提供用户体验层面的初步提示而不能保障安全;具体而言,首先通过用户身份认证(如用户名/密码或oauth)确认用户身份,服务器创建会话并返回标识符,后续…

    2026年5月10日
    800
  • 解决 Node.js 连接本地 MongoDB 后程序卡死的问题

    本文旨在帮助开发者解决 Node.js 应用连接本地 MongoDB 数据库时,程序在建立连接后卡死的问题。通过分析可能的原因,并提供相应的解决方案,确保 Node.js 应用能够稳定可靠地与 MongoDB 数据库进行交互。文章将涵盖数据库连接配置、端口冲突、跨平台兼容性等方面,并提供代码示例进行…

    2026年5月10日
    000
  • Node.js Express 服务器启动与常见问题排查

    本教程旨在指导开发者正确初始化和启动 node.js express 服务器,解决服务器无响应或未运行的问题。文章将详细阐述 express 应用的创建、路由定义及端口监听等核心步骤,并针对常见的服务器启动失败、请求体解析错误以及数据持久化等问题提供专业的排查思路和解决方案,确保开发者能顺利构建稳定…

    2026年5月10日
    000
  • MongoDB 动态查询:获取集合中最近N年的数据

    本文详细介绍了如何在 MongoDB 中动态查询集合内最近N年的数据,而非基于当前系统时间。通过利用聚合管道的 $setWindowFields、$sort 和 $limit 等阶段,我们能够智能地识别集合中的最新日期,并以此为基准,灵活地提取指定时间范围内的记录,无需硬编码日期,极大地提升了查询的…

    2026年5月10日
    100
  • Golang结构体标签解析错误怎么办?Golang反射标签使用指南

    Golang结构体标签解析错误怎么办?Golang反射标签使用指南Golang结构体标签解析错误怎么办?Golang反射标签使用指南Golang结构体标签解析错误怎么办?Golang反射标签使用指南Golang结构体标签解析错误怎么办?Golang反射标签使用指南

    golang结构体标签解析错误通常由格式不正确、类型不匹配或反射使用不当引起。首先,确保标签格式正确,键值对用冒号分隔,多个键值对之间用空格分隔;其次,检查字段与标签值的类型是否匹配;再者,使用reflect包正确获取标签值,注意索引范围和字段可导出性;最后,处理可能出现的错误,如标签不存在返回空字…

    2026年5月10日 用户投稿
    000
  • 如何高效地在Go中使用http.ResponseWriter构建JSONP响应

    本教程探讨在go语言中高效构建jsonp响应的方法,重点解决如何使用`http.responsewriter`处理回调函数封装。文章通过对比传统字符串拼接与字节切片转换的不足,详细介绍了利用`fmt.fprintf`直接写入和`fmt.sprintf`预格式化两种优化方案,旨在提升代码的简洁性和执行…

    2026年5月10日
    000
  • Go mgo 教程:高效存储扁平化 Go 嵌套结构体

    本教程旨在解决使用 `mgo` 库将 Go 语言中的嵌套结构体存储到 MongoDB 时,默认行为导致文档结构出现嵌套的问题。我们将深入探讨如何利用 `bson` 包提供的 `inline` 标签,将嵌入式结构体的字段提升到父级文档中,从而实现扁平化的 MongoDB 文档结构,提升数据存储的直观性…

    2026年5月10日
    000
  • 关于CSS3中选择符的实例详解

    英文原文: www.456bereastreet.com/archive/200601/css_3_selectors_explained/中文翻译: www.dudo.org/article.asp?id=197注:本文写于2006年1月,当时IE7、IE8和Firefox3还未发行,文中所有说的…

    用户投稿 2026年5月10日
    100
  • 为什么多年的经验让我选择全栈而不是平均栈

    在全栈和平均栈开发方面工作了 6 年多,我可以告诉您,虽然这两种方法都是流行且有效的方法,但它们满足不同的需求,并且有自己的优点和缺点。这两个堆栈都可以帮助您创建 Web 应用程序,但它们的实现方式却截然不同。如果您在两者之间难以选择,我希望我在两者之间的经验能给您一些有用的见解。 在这篇文章中,我…

    2025年12月24日
    000
  • 从初学到专业:掌握这五种前端CSS框架

    CSS是网站设计中重要的一部分,它控制着网站的外观和布局。前端开发人员为了让页面更加美观和易于使用,通常使用CSS框架。这篇文章将带领您了解这五种前端CSS框架,从入门到精通。 Bootstrap Bootstrap是最受欢迎的CSS框架之一。它由Twitter公司开发,具有可定制的响应式网格系统、…

    2025年12月24日
    600
  • CSS开发进阶秘籍:项目经验教你提升开发技能

    CSS开发是前端工程师不可或缺的一项技能。随着前端技术的不断发展,CSS也在不断更新和演进。想要成为一名优秀的CSS开发者,除了掌握基本的CSS语法和属性之外,还需要不断提升自己的实战经验和技巧。 本文将分享一些项目经验,帮助你进一步提升CSS开发技能。 一、充分利用CSS预处理器CSS预处理器可以…

    2025年12月24日
    000
  • CSS动画教程:手把手教你实现脉冲特效

    CSS动画教程:手把手教你实现脉冲特效,需要具体代码示例 引言:CSS动画是网页设计中常用的一种效果,它可以为网页增添活力和视觉吸引力。本篇文章将带您深入了解如何利用CSS实现脉冲特效,并提供具体的代码示例教您一步步完成。 一、了解脉冲特效脉冲特效是一种循环变化的动画效果,通常用在按钮、图标或其他元…

    2025年12月24日
    100
  • CSS动画教程:手把手教你实现流水流光特效

    CSS动画教程:手把手教你实现流水流光特效,需要具体代码示例 前言:CSS动画是网页设计中常用的技术,它使得网页更生动有趣,吸引用户的注意力。在这篇教程中,我们将会学习如何使用CSS实现一个流水流光的特效,并提供具体的代码示例。让我们开始吧! 第一步:HTML结构首先,我们需要创建一个基本的HTML…

    2025年12月24日
    000
  • 初学者如何快速入门CSS3技术

    初学者如何快速入门CSS3技术 CSS3是一种用于网页设计的样式表语言,它为开发者提供了丰富的样式特性和效果。对于初学者来说,学习CSS3技术可能会感觉困难和复杂,但只要掌握了基本的概念和语法,就能快速入门并开始使用CSS3来设计出令人印象深刻的网页。 本文将以简单明了的方式介绍CSS3的一些基本概…

    2025年12月24日
    100
  • word-wrap怎么自动换行?css强行自动换行教程

    本篇文章给大家带来的内容是关于word-wrap怎么自动换行?css强行自动换行教程,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 word-wrap介绍 word-wrap是设置对象内文字遇到对象顶边时是否采取换行排版布局。 1、语法 立即学习“前端免费学习笔记(深入)”; wo…

    2025年12月24日
    000

发表回复

登录后才能评论
关注微信