node.js - 在 MongoDB 中存储数据的最佳方式是什么?
问题描述
我想知道我在 MongoDB 中的数据结构的最佳选择是什么。
我有这个系列:
事件集合
{
"_id": {
"$oid": "611ffe86c7db41a72d3b8635"
},
"title": "...",
"description": "...",
"creatorID": "...",
"imageUrl": "..."
}
和,
评论收藏:
{
"_id": {
"$oid": "some ID"
},
"eventID": "611ffe86c7db41a72d3b8635",
"text": "..."
}
在每个事件中,可以有多个出版物。我确实创建了两个集合,因此我可以从一个事件 ID 调用Thing.find({ eventID: 'a event ID' })
并从一个事件中获取所有出版物。
它工作正常,但我看到在一个字段中可以为一个父级存储数组或多个子级。我想知道是否最好使用这两个结构之一(只有一个集合):
结构 1:
{
"_id": {
"$oid": "611ffe86c7db41a72d3b8635"
},
"title": "...",
"publications" : [ "PUBLICATION 1" , "PUBLICATION 2", ... ]
"description": "...",
"creatorID": "...",
"imageUrl": "...",
}
结构2:
"_id": {
"$oid": "611ffe86c7db41a72d3b8635"
},
"title": "...",
"publications" : {
"1" : "Publication 1",
"2" : "Publication 2",
"3" : "Publication 3",
...
}
"description": "...",
"creatorID": "...",
"imageUrl": "...",
}
考虑到可能有数以百万计的事件和数以千万计的出版物,根据这些标准,最好的选择是什么:
-查询速度
-成本
-动态(添加一个出版物,修改它,删除它,...)
-也许是其他人?
先感谢您 !
解决方案
你应该array
为此使用一个。就像您说的那样,这可能是一个非常庞大的数据,dynamically allocating memory
在这种情况下,请让您的程序正常运行slower
。
推荐阅读
- kubernetes - Kubernetes - 如何定义使用 yaml 中的文件构建的 ConfigMap?
- office-ui-fabric - 我可以为 TextField 的图标指定一个单独的 onClick 处理程序吗?
- java - 没有适用于 nexus 3 的正确文档。所以似乎我在搜索令牌密钥时遇到了问题
- scilab - 不兼容的输出参数。[scilab]
- scala - Spark 上的 XGBoost 因 SIGSEV 崩溃
- wiki - 微软团队中增强的 wiki 功能?
- html - 移动和平板电脑分辨率上的导航切换按钮位置
- python-3.x - 使用 shapely 返回相交的多线串的坐标
- python - 从 pandas Dataframe 中提取月份数据
- http-status-code-404 - 在微服务中请求 userboostrap 时返回 404 错误