MongoDB非规范化与一次性初始查询

MongoDB非规范化与一次性初始查询,mongodb,normalization,denormalization,nosql,Mongodb,Normalization,Denormalization,Nosql,我有一个类似博客帖子的应用程序。用户和项目存储在两个不同的集合中,即多对多。一个用户可能有2-10个项目。一个项目可能有5-100个用户,通常是10个左右。Post是另一个包含以下对象的集合: { "project_id": 123, "user_id": 456, "text": "some text", "comments": [{Comment object}] } 目前我使用规范化方法。当应用程序第一次加载时,我启动一个一次性查询来检索所有当前用户的项目

我有一个类似博客帖子的应用程序。用户和项目存储在两个不同的集合中,即多对多。一个用户可能有2-10个项目。一个项目可能有5-100个用户,通常是10个左右。Post是另一个包含以下对象的集合:

{
    "project_id": 123,
    "user_id": 456,
    "text": "some text",
    "comments": [{Comment object}]
}
目前我使用规范化方法。当应用程序第一次加载时,我启动一个一次性查询来检索所有当前用户的项目名称和项目用户名。然后将它们存储在全局变量中,以便在我的应用程序中的任何地方都可以访问。这种方法的唯一缺点是初始加载时间会稍长,具体取决于您有多少项目以及项目中有多少用户。感觉没什么大不了的

然而,许多文章建议使用非规范化。我知道其利弊。因为项目名称和用户名存在于太多的字段和不同的集合中。如果修改了项目名称或用户名,则传播更改可能是一项长期运行的任务。也就是说,这种情况不会经常发生

我只是想知道我目前的方法是否合理。或者,在MongoDB方面,非规范化也是一种很好的实践。请讨论并提出建议。谢谢