【问题标题】:Mongo Java-driver: recreation indexes after collection droppingMongo Java-driver:收集丢弃后的娱乐索引
【发布时间】:2011-10-11 11:01:22
【问题描述】:

我有必要从 mongo 集合中删除所有数据。丢弃收集比collection.remove(new BasicDBObject()) 更快。但它也删除了索引定义。因此,我想在收集丢弃后恢复索引定义。

总的来说,我有以下计划:

  1. 在删除之前获取所有索引定义: http://www.mongodb.org/display/DOCS/Java+Tutorial#JavaTutorial-GettingaListofIndexesonaCollection
  2. 删除后重新创建定义:http://www.mongodb.org/display/DOCS/Java+Tutorial#JavaTutorial-CreatingAnIndex

对我来说,问题是应该检索/传递以重新创建索引的确切值。例如。将对所有类型的索引进行正确的工作:

List<DBObject> storedDefinitions = coll.getIndexInfo();
coll.drop();
for (DBObject storedDefinition : storedDefinitions) {
  coll.createIndex(storedDefinition.get("key"));
}

如果不是 - 实现我的目标的最佳方式是什么?

感谢您的帮助!

【问题讨论】:

    标签: java mongodb indexing mongo-java


    【解决方案1】:

    你已经接近了。您需要读取检索到的索引的索引选项,并使用方法的 createIndex(DBObject key, DBObject options) 版本将这些选项应用于新创建的索引。

    【讨论】:

    • 感谢您的回答!但是如何获得准确的选项集呢?
    • mongodb.org/display/DOCS/Indexes#Indexes-CreationOptions 提供一组现有选项。但它可以在以后扩展,我正在寻找精确确定索引相关 DBObject 中设置的选项的可能性。
    • getIndexInfo().get(..).get("sparse"), getIndexInfo().get(..).get("unique") 等。对于未来扩展的更安全的方法只需删除所有必填字段(“ns”、“v”、“key”等),就剩下所有可选字段。
    猜你喜欢
    • 1970-01-01
    • 2018-05-18
    • 2011-08-12
    • 1970-01-01
    • 2021-08-09
    • 2010-12-16
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    相关资源
    最近更新 更多