mongodb - 在 MongoDB 中定义具有相似结构的集合的最佳方法
问题描述
我正在尝试创建一个类似部分的论坛,为此我使用 MongoDB 来存储数据。
所以我的结构由主线程和帖子组成。
例如用户创建一个线程
{
title: String
post: Post // initial post
totalReactionCounts: { [key: emojiName]: number } // store all post reactions number for easy sort
}
其他用户可以在该主题下发表一些评论
{
text: String,
reactions: { enum: [...emojis] }
repliedTo: Post // users can reply to others comments
thread: Thread,
isMain: Boolean // whether this is initial post of thread
}
我认为这是一个相当简单的模式,拥有只存储标题和多个帖子的主线程,即one-to-many
. 我怀疑的是,我是否应该有isMain
标志,这表明这是否是作者的初始帖子。
我存储这种标志的原因是其他参与者可以对线程和子帖子做出反应。但是,当我搜索线程title
和主要帖子时,这种“规范化”方式让我很吃力text
。
另一种非规范化方法建议将reactions
和text
直接存储在Thread
. 但是这样我会重复代码,尽管它们属于不同的模型。
我的问题是,如何处理这种问题,其中集合共享相似的数据并在它们之间存在关系,而不会在非规范化方法的情况下失去 MongoDB 提供的性能提升。
解决方案
推荐阅读
- visual-studio - 如何在 Microsoft Store 中旁加载应用程序时安装 Microsoft.NET.Native.Runtime.2.1-rel 包
- api - 为什么 Silverpop 不接受我的 XML API 调用?
- odoo - 如何在 odoo 9 中扩展模板?
- python - 在新线程中运行调度函数
- javascript - 为什么 Ajax 在移动设备上通过 POST 方法提交表单后会刷新页面?
- google-kubernetes-engine - 如何在 gcr.io 上调试 ImagePullBackOff
- jquery - 滚动上的错误输入自动填充位置(chrome)
- angular6 - 有没有办法跳过Angular httpClient未处理的预检响应?
- javascript - querySelector 不适用于 appendchild 创建的元素
- html - 由于内容,按大小排列的框未正确垂直对齐