在MongoDB中使用UnifiedTopology为false的替代方法是啥,以便客户端重新连接回MongoDB服务器?

Posted

技术标签:

【中文标题】在MongoDB中使用UnifiedTopology为false的替代方法是啥,以便客户端重新连接回MongoDB服务器?【英文标题】:What are the alternatives to useUnifiedTopology as false, in MongoDB, so that the client reconnects back to MongDB Server?在MongoDB中使用UnifiedTopology为false的替代方法是什么,以便客户端重新连接回MongoDB服务器? 【发布时间】:2020-12-01 19:49:12 【问题描述】:

目前 MongoDB 驱动程序有此弃用警告:

Current Server Discovery and Monitoring engine is deprecated, and will be removed in a future version

when the options are set to:

const client = new MongoClient(uri,  useNewUrlParser: true, useUnifiedTopology: false );

如果我仍然继续使用相同的方法,当我遇到网络丢失和请求堆叠时会出现一些拓扑错误

我知道解决方法是保留useUnifiedTopology true,但我需要我的服务器重新连接到数据库以防网络丢失。否则我必须为每 1 或 2 次操作重新连接到数据库

【问题讨论】:

【参考方案1】:

您是否注意到,当您使用统一的 Yopology 时,您使用的是两个连接而不是两个? mongodb cluster tiers cons 减少到它所说的一半是什么意思?

即。如果 M10 为您提供 1500 个缺点,如果设置为 true,您就可以拥有活跃用户...

【讨论】:

【参考方案2】:

虽然我无法找到 useUnifiedTopology 选项的确切描述,但我在印象中除了release announcement 中提到的方面之外,它的作用是使节点驱动程序符合服务器发现、监控和选择各个方面的跨驱动程序规范。

对于当前问题,这意味着将 useUnifiedTopology 设置为 true 的节点驱动程序应该“正确”地自动监视部署(如各种驱动程序规范中所定义),在连接丢失时重新连接等。

我知道解决方法是保持 useUnifiedTopology 为真,但我需要我的服务器重新连接到数据库以防网络丢失。否则我必须为每 1 或 2 次操作重新连接到数据库

我会说您要么使用的是旧版/错误版本的驱动程序,要么您在应用程序中做错了什么。

另见Warning on Connecting to MongoDB with a Node server。

【讨论】:

其实MongoDB的这篇文档mongodb.github.io/node-mongodb-native/3.3/reference/…>另有说法。引用文档的最后一段 The unified topology completely removes the disconnect handler, in favor of the more robust and consistent Retryable Reads and Retryable Writes features 谢谢,这绝对是我迄今为止看到的最好的描述。 我认为您还暗示该文件与我所说的内容相矛盾,这 - 再次,在我对事物的理解中 - 实际上并非如此,这与引用的文件可能导致的相反相信。 所以我建议你做的是 1) 使用统一拓扑,2) 如果你有问题,请创建一个清楚描述问题的新问题。

以上是关于在MongoDB中使用UnifiedTopology为false的替代方法是啥,以便客户端重新连接回MongoDB服务器?的主要内容,如果未能解决你的问题,请参考以下文章

Node.js中使用MongoDB

在centos中使用yum安装mongodb

如何使`org.mongodb.driver.cluster`在spring boot中使用嵌入式mongodb?

使用 mongoose 在 MongoDB 中批量插入

我想在mongodb中使用左外连接,如何使用它?我只使用mongodb指南针

MongoDB 使用教程