哪种方式会更有效率?

我更习惯于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的单独“答复”集合,然后在帖子集合中通过ID“链接”它?

我不确定,但感觉第一种方式更像“NoSQL-like”,第二种方式是我将用于MySQL的方式。

任何投入都欢迎。


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

如果这些回复的数量可以是数百或数千,并且您不会默认显示它们(例如,您将让用户点击以加载这些评论),那么将回复存储在单独的页面中会更有意义采集。

最后,如果您需要存储比_id更多的用户(例如名称),则必须考虑在复制数据时在两个地方(此处和用户维护页面中)维护名称。 这可以控制或者工作太多。 你必须决定。

链接地址: http://www.djcxy.com/p/88753.html

上一篇: which way will be more efficient?

下一篇: Create one collection for each user vs create one collection for all user