【问题标题】:ReactiveMongo connect with MongoConnectionOptionsReactiveMongo 使用 MongoConnectionOptions 连接
【发布时间】:2020-06-25 16:43:43
【问题描述】:

我在 reactivemongo 版本 0.15.x 中使用 MongoConnectionOptions 连接到我的 MongoDB。现在我更新为0.20.11

MongoConnectionOptions 伴生对象的 apply() 函数现已弃用。弃用警告说要使用MongoConnectionOptions 的构造函数。不幸的是,这个构造函数是包私有的。

我不想使用已弃用的 apply 函数,主要是因为我的 scala 编译器选项不允许警告。 (而且我真的不想改变这一点)。

官方文档只说明了弃用的版本:http://reactivemongo.org/releases/0.1x/documentation/tutorial/connect-database.html

我怎样才能使用连接选项连接到数据库?

【问题讨论】:

  • 您提到的版本 0.1.5 或 0.2.11 不存在。可以在 URI 中指定连接选项(请参阅连接文档)。
  • @cchantep 抱歉,我弄错了版本。我在原始问题中更新了它们。对于 URL:我需要以编程方式组装它。

标签: scala reactivemongo


【解决方案1】:

MongoConnectionOptions(..) 工厂将在即将到来的下一个主要版本 1.0.x 中进行重构。

无论如何,你可以使用.default + .copy(..)

import reactivemongo.api.MongoConnectionOptions

MongoConnectionOptions.default.copy(appName = "Foo")

此外,可以(从配置文件或以编程方式)将选项准备为 URI 字符串。

val host = "localhost"
val port = 27017

reactivemongo.api.MongoConnection.connect(s"mongodb://${host}:${port}")

【讨论】:

    【解决方案2】:

    我使用以下语法并且对我来说很好:

    val host = "localhost"
    val port = "27017"
    val db_name = "test"
    val mongoUri = "mongodb://" + host + ":" + port + "/" + db_name
    val driver = new AsyncDriver
    val database = for {
      uri <- MongoConnection.fromString(mongoUri)
      con <- driver.connect(uri)
      dn <- Future(uri.db.get)
      db <- con.database(dn)
    } yield db
    
    val bsonCollection: Future[BSONCollection] = database.map(_.collection(collectionName))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-20
      相关资源
      最近更新 更多