MongoDB集合 - 哪种方式更有效?

时间:2016-06-19 13:00:27

标签: mongodb nosql

我更习惯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的方式。

欢迎任何意见。

1 个答案:

答案 0 :(得分:1)

这是MongoDB中的典型数据建模问题。由于您计划仅存储用户的_id,因此答案肯定是嵌入它,因为这些回复是post对象的一部分。

如果这些回复的数量可以是数百或数千,而您默认情况下不会显示它们(例如,您将让用户单击以加载这些注释)那么存储回复会更有意义在一个单独的集合中。

最后,如果您需要存储多于用户_id(例如名称),则必须考虑在两个位置(此处和用户维护页面中)维护名称,因为您正在复制数据。这可以是可管理的或太多的工作。你必须决定。