【问题标题】:Creating a mongodb capped collection in java在java中创建一个mongodb上限集合
【发布时间】:2012-06-27 15:01:48
【问题描述】:

我想从 Java 代码创建一个有上限的集合。我找到了通过 JavaScript 创建它的语法,但找不到 Java 的示例。

Mongo mongo = new Mongo("127.0.0.1");
DB db = mongo.getDB("mydbid");

DBCollection collection;
if (db.collectionExists("mycollection")) {
        collection = db.getCollection("mycollection");
    } else {
        collection = /* ????? Create the collection ?????? */
    }
}

【问题讨论】:

    标签: mongodb-java


    【解决方案1】:

    使用 DB.createCollection 操作,然后指定一个具有 capped 的 DBObject 作为参数。然后,您可以指定 sizema​​x 以控制字节大小和最大文档数。 MongoDB 站点在上限集合上有一个 tutorial,它解释了所有选项,但缺少每个驱动程序的示例。

    Mongo mongo = new Mongo("127.0.0.1");
    DB db = mongo.getDB("mydbid");
    
    DBCollection collection;
    if (db.collectionExists("mycollection")) {
            collection = db.getCollection("mycollection");
        } else {
            DBObject options = BasicDBObjectBuilder.start().add("capped", true).add("size", 2000000000l).get();
            collection = db.createCollection("mycollection", options);
        }
    }
    

    【讨论】:

    • 感谢您的回答,但我想知道除了使用 if else 来解决这个问题还有其他方法吗?
    • if/else 仅用于在集合不存在时进行动态创建。如果上限集合是在使用之前创建的,那么您只需要代码示例的 else 部分。
    【解决方案2】:

    使用更新的 java mongo 驱动程序(即 3.4),创建应该略有变化:

    CreateCollectionOptions opts = new CreateCollectionOptions().capped(true).sizeInBytes(1024*1024);
    database.createCollection("test", opts);
    

    请注意createCollection 没有返回任何值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-28
      • 2018-07-03
      • 2011-12-15
      • 2016-05-16
      • 1970-01-01
      • 1970-01-01
      • 2016-01-09
      相关资源
      最近更新 更多