【发布时间】:2021-07-19 17:05:42
【问题描述】:
假设我有很多 JSON 文件存储在文件系统中,例如
├── a
│ ├── a-1.json
│ ├── a-2.json
│ ├── a1
│ │ └── a11
│ │ ├── a11-1.json
│ │ └── a11-2.json
│ └── a2
│ └── a2-1.json
├── b
│ └── b1
│ ├── b1-1.json
│ └── b1-2.json
└── c
└── c-1.json
现在我需要将所有这些带有目录结构的 JSON 文件存储在 MongoDB 中。
所以我想创建两个集合:“文件”和“目录”。 “files”集合包含 JSON 文件。
{ "id" : 12345, "name" : "a-1", ... }
{ "id" : 67890, "name" : "a-2", ... }
“dirs”集合包含与目录对应的文档。例如:
{"a" : {files: [12345, 67890], "a1:" : {"a11": {files: [...]}}, "a2" : {...}}
{"b" : {"b1" : {files: [...]}}}
{"c" : {files: [...]}}
这个架构有意义吗?
【问题讨论】:
-
也许
{folder: "\a\a1\a11", files: [ "a11-1.json", "a11-2.json"] }更通用 -
感谢您的建议。为什么你用文件名而不是
id?文件名不是唯一的。 -
不明白你的意思。
-
你是对的。我的评论不清楚。我想知道你为什么使用文件名数组
files: ["a11-1.json", "a11-2.json"]而不是ids、e、g、files: [<id of a11-1.json>, <id of a11-2.json>]的数组 -
由你决定,什么是“
”?一个文件有一个文件名,还有什么? (除了一些文件系统内部的东西)。当然,定义 2 个集合不是一个聪明的主意。只用一个!像 MonogDB 这样的 NoSQL 数据库不是像 Oracle 或 MySQL 这样的关系数据库。应该避免查找,它们没有针对它进行优化,并且一些 NoSQL 系统根本不支持查找。