检查MongoDB是否连接到MongoDB Atlas



我想在MongoDB中进行文本搜索。在开发中我使用本地mongodb,在生产中我使用mongodb Atlas。如果我连接的数据库是MongoDB Atlas,我想进行$searchAtlas搜索。如果我连接到本地数据库,我想使用$text

我所考虑的

检查连接uri

如果以.mongodb.net结尾,请使用Atlas Search。如果没有,请使用普通文本搜索。

尝试使用$search,如果出现错误,则使用$text

在生产中,它不会很慢,因为首先它将尝试$search,并且它将在生产中工作。在开发过程中,它可能会很慢,因为每次都会生成一个额外的失败查询。

此外

有没有一种方法可以模仿本地MongoDB的Atlas搜索行为?如果它涉及到一个非常慢的查询,这是可以的,但最好使用与生产中相同质量的文本匹配进行测试。

我想说你的两个建议都被认为是反模式的,我个人会避免两者。

我个人会做的与你的第一个建议非常相似,但我不会检查连接字符串的值,而是只使用process.env.NODE_ENV值,这被认为是一种常见的做法,可以使用它来区分开发阶段和生产环境。


有没有一种方法可以模仿本地MongoDB的Atlas搜索行为?如果它涉及到一个非常慢的查询,这是可以的,但最好使用与生产中相同质量的文本匹配进行测试。

技术上没有,正如您所知,atlas搜索为您提供了许多搜索引擎功能,如开箱即用的标记器和分析器。如果你有一个非常具体的用例,也许你可以设计一个解决方案来让它发挥作用,但这需要你基本上通过atlas对你正在使用的功能进行逆向工程,这意味着这可能不值得付出努力。

最新更新