Database design 在mongodb中,我应该创建两个集合还是一个集合(如果我有一个大字符串字段)

Database design 在mongodb中,我应该创建两个集合还是一个集合(如果我有一个大字符串字段),database-design,mongodb,Database Design,Mongodb,下面是实际案例的简化概要 如果我有以下4个字段,即名称、图片、生物文本、生物html 问题:我应该有两个集合,即仅限用户和具有bio的用户,还是应该只有一个集合,即具有bio的用户 使用模式:考虑到很多时候我只需要名称和图片,所以只需要查询用户就可以得到我想要的,并且在需要时,我可以使用bio查询用户 注1:我知道在上面这个简单的例子中,我可以只索引名称和图片字段,这样就永远不会检索文档,但在真实的例子中,有更多的“较小的字段”,所以索引所有字段不是一个选项 注2:如果bio text约为500

下面是实际案例的简化概要

如果我有以下4个字段,即名称、图片、生物文本、生物html

问题:我应该有两个集合,即仅限用户和具有bio的用户,还是应该只有一个集合,即具有bio的用户

使用模式:考虑到很多时候我只需要名称和图片,所以只需要查询用户就可以得到我想要的,并且在需要时,我可以使用bio查询用户

注1:我知道在上面这个简单的例子中,我可以只索引名称和图片字段,这样就永远不会检索文档,但在真实的例子中,有更多的“较小的字段”,所以索引所有字段不是一个选项


注2:如果bio text约为500至750k,bio html约为750k至1mb,并且在任何时候我都只想要文本或html,但决不同时想要两者,那么拥有3个集合(即仅限用户、具有文本的用户和具有html的用户)有意义吗?

只保留一个集合,并使用“投影”选项仅检索查询时所需的字段。在你做任何基准测试之前,都不要考虑优化它。我怀疑你会发现有点不同。

你是否只想从用户那里阅读?也就是说,在您提到的三个系列中,您是否有时仅从用户处阅读?或者总是来自文本用户或html用户?是的,我几乎总是只从用户那里阅读,而很少从html用户那里阅读。从这个链接来看,限制字段似乎迫使mongodb执行额外的步骤,因为它将数据保存在BSON中……对其进行基准测试,否则你只是在做毫无根据的假设。每个数据都有自己的属性,包括存储和访问。