前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在MongoDB设计存储你的数据(JSON化)?

如何在MongoDB设计存储你的数据(JSON化)?

作者头像
星哥玩云
发布2022-08-17 14:31:15
1.6K0
发布2022-08-17 14:31:15
举报
文章被收录于专栏:开源部署

第一步 定义要描述的数据集

当我们决定将数据存储下来的时候,我们首先要回答的一个问题就是:“我打算存储什么样的数据?这些数据之间有什么关系?实体之间有什么关系?实体的属性之间有什么关系”。

为了说明问题,我们这儿举例的场景是要描述 库存清单的数据库,库存清单数据 包括 物料名称、数量、规格大小、状态、标签说明、等级。

如下list是我们希望关于库存清单的部分格式数据

name

quantity

size

status

tags

rating

journal

25

14x21,cm

A

brown, lined

9

notebook

50

8.5x11,in

A

college-ruled,perforated

8

paper

100

8.5x11,in

D

watercolor

10

planner

75

22.85x30,cm

D

2019

10

postcard

45

10x,cm

D

double-sided,white

2

(备注: cm 为长度单位,厘米;in 也是长度单位:1in=25.4mm==2.54cm)

第二步 JSON 化 思维

上面表中的size 和 tags 栏位 都存储了多个值,例如Size 既有大小 的数字描述还有它们单位的描述,tags 这种标签的说明更是难以统一,可能此物料只有一个属性说明,而其他物料可能有多个属性的说明。这种字段如果在关系型数据库中存储,假设存储在一个字段中,那么查询起来比较费时,模式化也比较困难。如果拆开放到不同的表中,完整性就不是很好,表的设计也是难以清晰,表Join查询也会有性能下降。

MongoDB 数据中,数据都是以文档的形式存储的。这些文档都是以JSON(JavaScript Object Notation)格式设计存在的【物理盘上实际是以BSON格式存储的】。JSON文档支持内嵌字段。因此,我们可以将关联性强的数据或同一个List中的数据存储在同一个文档中,此时,不再需要存储在SQL数据库中多个表中【如果在SQL数据库,需要多个表,来描述关联】。

JSON 格式就是将数据存为 键/值对 。在JOSN文档中,键和值 之间用 冒号(:)隔开;一个个键/值之间用逗号(,)隔开,同一个文档中的一组键/值包含在一个花括号({})中。

例如,下面List中的 name 和 quantity 字段数据 JSON化,

name

quantity

size

status

tags

rating

notebook

50

8.5x11,in

A

college-ruled,perforated

8

将这两个栏位JOSN化,就是下面这个形式:

代码语言:javascript
复制
{"name": "notebook", "qty": 50}

 第三步 针对多值字段,选择合适的数据模型

针对多值的字段,我们可以从内嵌模型、数组 List 模型两种数据模型中选择一种。

例如上面 库存清单数据的那个例子,我们可以将Size,设计成内嵌模型,这个Size 可以有三个属性:高、宽、计量单位。

代码语言:javascript
复制
{ "h": 11, "w": 8.5, "uom": "in" }

 一些商品原料,可能又多个等级得分,我们可以将这些等级得分存储在一个数组list中,例如上面例子中的ratings栏位。

代码语言:javascript
复制
[ { "score": 8 }, { "score": 9 } ]

上面例子中的tags 也可以存放在数组list中

代码语言:javascript
复制
[ "college-ruled", "perforated" ]

那么其中的关于notebook的记录数据 如下

notebook

50

8.5x11,in

A

college-ruled,perforated

8,9

代码语言:javascript
复制
而将其 JOSN 化后,要存的文档样式如下:

{
 "name": "notebook",
 "qty": 50,
 "rating": [ { "score": 8 }, { "score": 9 } ],
 "size": { "height": 11, "width": 8.5, "unit": "in" },
 "status": "A",
 "tags": [ "college-ruled", "perforated"]
}
代码语言:javascript
复制
以上过程就是数据记录的JSON过程、文档化过程。


注: 以上内容作者翻译自 MongoDB 官网,网址为 https://docs.mongodb.com/guides/server/introduction。
因作者非专业翻译人员,难免有错误或不准确的地方,请见谅。 
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第一步 定义要描述的数据集
  • 第二步 JSON 化 思维
  •  第三步 针对多值字段,选择合适的数据模型
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档