文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何对mongodb存储类JSON数据文档统计分析

2023-07-02 09:37

关注

今天小编给大家分享一下如何对mongodb存储类JSON数据文档统计分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

一、文档存储的需求

很多的开发者都使用过mongodb,在mongodb中数据记录是以文档的形式存在的(类似于一种多级嵌套SQL的形式)。比如下面的JSON数据结构:dev_ip表示某一台服务器的ip、location字段存放经纬度、meminfo.total和meminfo.userd分别代表内存总量和使用量。

[{  "dev_ip": "123.46.5.111",  "location": [39.916527, 116.397128],  "meminfo": {    "total": 64,    "used": 23.2  }},{  "dev_ip": "123.46.5.112",  "location": [39.916144, 116.392582],  "meminfo": {    "total": 64,    "used": 27.8  }}]

二、建表

存储文档需要使用到Map这种数据类型,在某些比较旧的版本中,Map数据类型还是实验性的,不能直接使用。如果想使用,需要执行set allow_experimental_map_type = 1;
然后我们可以按照JSON的数据结构来建表,location是数组Array数据类型,meminfo是Map数据类型。

CREATE TABLE dev_meminfo (  dev_ip String,    location Array(Float64),  meminfo Map(String, Float32))ENGINE = MergeTree()ORDER BY dev_ip;

clickhouse提供了数组类型Array(T),数组类型由多个T元素组成。T可以是任意的基础数据类型,或者也可以是数组类型。如果是数组类型就形成了多维数组,Cickhouse对多维数组的支持有限,所以不建议使用多维数组。数组里面所有的T元素的数据类型必须是一样的,否则会抛出异常。

三、数据入库

在linux环境下,我们可以将JSON数据保存为一个文档,命名如:dev_meminfo.json。然后使用下面的命令行,完成文档JSON数据的入库。jq的作用是将JSON数组及Map从结构中剥离出来,从而符合JSONEachRow要求的输入格式。

cat dev_meminfo.json |jq -c .[] | clickhouse-client --database acaidb -m -u acai --password '<你的密码>'  \--query="INSERT INTO dev_meminfo FORMAT JSONEachRow"

或者我们可以直接使用INSERT语句来完成数据的单条插入,如下:

INSERT  INTO dev_meminfo FORMAT JSONEachRow {"dev_ip": "123.46.5.112", "location": [39.916144, 116.392582],"meminfo": {"total": 64,"used": 27.8}};

四、查询数据

select * 的方式查询数据:

#  clickhouse-client --database acaidb -m -u acai --password '4rfv$RFV'  --query="SELECT * FROM dev_meminfo"123.46.5.111    [39.916527,116.397128]  {'total':64,'used':23.2}123.46.5.112    [39.916144,116.392582]  {'total':64,'used':27.8}

使用字段名称方式查询数据,需要注意的是Ciickhouse的数组的下标是从0开始的,这与我们传统编程开发中的规范是不一致的。

# clickhouse-client --database acaidb -m -u acai --password '4rfv$RFV'  --query="SELECT dev_ip,location[1],location[2],meminfo['total'],meminfo['used'] FROM dev_meminfo"123.46.5.111    39.916527       116.397128      64      23.2123.46.5.112    39.916144       116.392582      64      27.8

以上就是“如何对mongodb存储类JSON数据文档统计分析”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯