首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >选择国家后,在MongoDB数据库之间切换的方式和方法。(MERNG)

选择国家后,在MongoDB数据库之间切换的方式和方法。(MERNG)
EN

Software Engineering用户
提问于 2022-01-15 23:01:13
回答 1查看 121关注 0票数 -3

我有一个概念,用户选择一个国家,它要么过滤,要么进入那个数据库;我在考虑其他的方法或选项,以帮助这一过程。这些是我对这个想法的具体选择的第一个计划或想法。在进一步研究之前,我目前正在使用MERNG (MongoDB、Express、React (NextJs)、Nodejs、Graphql (使用阿波罗))堆栈来提醒您。

OPTIONS

选项1:

我想也许我应该在MongoDB中的每个集合中放置对象键。例如,类似这样的事情:

通过这种方式,我可以通过使用类似于Post.find({ country: CountryName})之类的find来过滤它。

但当我这么做的时候,我想这可能是一个麻烦,因为我必须在每一个收藏品中加入目标关键国家,这是很大的工作。它确实帮助解决了我的问题,但我希望它是简单的,因此第二个选择。

备选方案2:

对于这个选项,我想建立两个数据库:国家A数据库和国家B数据库。在我选择了前面的国家之后,我认为我使用的是React会连接到那个特定的数据库。

我认为这是最好的选择,因为这两个数据是分开的,例如包含用户的对象或数据的集合等等。但问题在于它的执行。我无法想象在我给服务器(例如,美国是我选择的国家),数据库连接如何变化,以及更多的情况下,我会怎么做。

这就是我现在能想到的所有选择。还有别的办法让这一切成为可能吗?如果没有,你能给我举一个例子来说明我想要做的这个过程吗?因为我目前不太擅长在MongoDB数据库之间切换,所以我真的不知道该如何做。如果您能提供下面的代码示例,我将不胜感激。如果你不明白我的意思,请在下面评论。如果可以的话,我会解释的。谢谢

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2022-01-16 11:55:16

可能会将对象保存在一个集合中,并添加一个country键。

你有没有想过在所有国家执行业务?然后将这些对象保存在同一个集合中。如果将对象拆分到多个数据库或集合中,这将使跨集合操作更加困难。本质上,您是在创建自己的数据库索引结构,而不是使用数据库内置的索引功能。而不是移除country字段,您只是在隐式地表示。

相反,您对将数据保存在一个集合中的反对似乎相当小。您抱怨在每个对象中都添加了一个country字段,认为“可能会很麻烦”,而且“工作量很大”。我不同意。这个字段是由软件添加的。您只需要编写一次软件,然后它将处理所有通过该软件处理的帖子的字段。在任何情况下,您的软件都需要管理国家:如果对具有匹配的国家键的对象使用单个集合和筛选,它需要知道国家的情况,但在使用不同的集合时,它也需要了解国家,因为代码必须知道要使用哪个集合。

因此,总的来说,我认为使用多个集合或数据库不会简化您的软件。与使用单个集合相比,它似乎没有任何优势。区别纯粹在于如何表示关于一个国家的信息--通过集合隐式地表示,或者通过对象中的字段显式地表示。我怀疑,明确的表述将是简单的整体。

这并不是说,它将永远简单。如果不同国家的数据本质上与您的应用程序的不同实例有关,那么拥有单独的数据库确实是有意义的(这是关于设计多租户系统的老争论)。但决定哪些数据进入哪个数据库的决定性因素不是“不同的国家”,而是“不同的实例”。只是碰巧您可能为不同的国家使用不同的实例。但我怀疑您没有在每个国家部署单独的应用程序实例,因此在每个国家部署不同的数据库或集合也没有什么意义。

票数 2
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/436018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档