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

本文探讨如何在MongoDB中设计并存储列表数据,通过JSON化思维处理多值字段,如尺寸和标签。以库存清单为例,介绍内嵌模型和数组模型的应用,展示了如何将数据转化为JSON文档以便于存储和查询。
摘要由CSDN通过智能技术生成

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

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

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

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

namequantitysizestatustagsrating

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 既有大小 的数字描述还有它们单位的描述

在使用Java将JSON文档数组插入MongoDB时,你需要使用BSON工具将JSON转换为BSON格式。以下是一个示例代码,可以将JSON数组插入到MongoDB中: ``` import com.mongodb.MongoClient; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; import org.bson.Document; import org.bson.conversions.Bson; import org.bson.types.ObjectId; import java.util.ArrayList; import java.util.List; public class MongoDBTest { public static void main(String[] args) { // 创建MongoDB连接 MongoClient client = new MongoClient("localhost", 27017); // 获取MongoDB数据库 MongoDatabase database = client.getDatabase("test"); // 获取MongoDB集合 MongoCollection<Document> collection = database.getCollection("users"); // 创建JSON数组 String json = "[{ \"name\" : \"Tom\", \"age\" : 20 },{ \"name\" : \"Jerry\", \"age\" : 25 }]"; // 将JSON数组转换为BSON文档列表 List<Document> documents = new ArrayList<>(); JsonParser parser = new JsonParser(); JsonArray jsonArray = parser.parse(json).getAsJsonArray(); for (JsonElement jsonElement : jsonArray) { Document document = Document.parse(jsonElement.toString()); documents.add(document); } // 插入BSON文档列表到MongoDB集合 collection.insertMany(documents); // 关闭MongoDB连接 client.close(); } } ``` 在这个示例中,我们使用了JsonParser将JSON字符串转换为JsonArray,然后遍历JsonArray,将每个元素转换为BSON文档,并将文档添加到BSON文档列表中。最后,我们使用insertMany方法将BSON文档列表插入到MongoDB集合中。注意,在使用BSON工具时,需要注意BSON格式与JSON格式的差异。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值