【问题标题】:Prevent default creation of MongoDB database programmatically防止以编程方式默认创建 MongoDB 数据库
【发布时间】:2013-06-27 23:11:24
【问题描述】:

有没有办法通过 Java API 检查 Mongo 数据库是否存在,而无需在启动调用时创建数据库?

我目前正在使用 Casbah(Scala 驱动程序)与我们的 Mongo 实例交互

val mongo = MongoConnection(List(new ServerAddress("localhost",27017)))
val db = mongo.getDB("testXXX") 

API getDB 似乎默认创建一个数据库,我不希望这种情况发生

如果testXXX 不存在,我希望 Mongo 创建一个数据库,而是让我作为消费者来决定它是否存在

是否有通过 MongoDB java 驱动程序或 Casbah 提供的 API?

【问题讨论】:

    标签: mongodb casbah


    【解决方案1】:

    我正在使用以下内容(也与 Casbah / Scala 一起使用):

    val dbExists = !mongo.dbNames.contains("testXXX")
    

    【讨论】:

    • 如果实例包含超过 100,000 多个 dbs 可能是一个昂贵的操作。我实现了一个替代解决方案,我自省是否存在集合,如果不存在,我删除创建的数据库。不最好的解决方案,但它不涉及跨所有数据库的线性搜索
    • 好点 - 在我们的上下文中,我们知道我们最多只有几十个 dbs。
    【解决方案2】:

    默认情况下,除非您向该数据库请求集合,否则不会在服务器上创建数据库。

    所以你可以使用val db = mongo.getDB("testXXX") 并且在你调用db.getCollection("myCollectionName") 之类的东西之前,不会在你的MongoDB 服务器上创建一个名为“testXXX”的数据库。

    【讨论】:

      猜你喜欢
      • 2019-08-10
      • 1970-01-01
      • 2021-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多