我更习惯MySQL,但我决定将MongoDB用于此项目。 基本上它是一个社交网络。
我有一个帖子集合,其中文档目前如下所示:
{
"text": "Some post...",
"user": "3j219dj21h18skd2" // User's "_id"
}
我希望实施回复系统。简单地添加喜欢用户的数组会更好:
{
"text": "Some post...",
"user": "3j219dj21h18skd2", // User's "_id"
"replies": [
{
"user": "3j219dj200928smd81",
"text": "Nice one!"
},
{
"user": "3j219dj2321md81zb3",
"text": "Wow, this is amazing!"
}
]
}
或者最好还是单独回答"回复"每个回复都带有唯一ID的集合,然后" link"通过帖子集合中的ID来获取它?
我不确定,但感觉第一种方式更多" NoSQL-like",第二种方式是我将采用MySQL的方式。
欢迎任何意见。
答案 0 :(得分:1)
这是MongoDB中的典型数据建模问题。由于您计划仅存储用户的_id,因此答案肯定是嵌入它,因为这些回复是post对象的一部分。
如果这些回复的数量可以是数百或数千,而您默认情况下不会显示它们(例如,您将让用户单击以加载这些注释)那么存储回复会更有意义在一个单独的集合中。
最后,如果您需要存储多于用户_id(例如名称),则必须考虑在两个位置(此处和用户维护页面中)维护名称,因为您正在复制数据。这可以是可管理的或太多的工作。你必须决定。