0

我有必要从 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"));
}

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

谢谢你的帮助!

4

1 回答 1

0

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

于 2011-10-11T11:40:54.010 回答