0

我的数据库中有一些具有“动态名称”的集合,假设我有一些存储来自特定国家/地区的动物数据的集合,所以在我的数据库中Animals我将​​有以下集合:

  • 澳大利亚-动物
  • 日本-动物
  • 巴西-动物

有时我需要将新的集合添加到我的数据库中,目前我有一个脚本可以向国家/地区添加索引,例如:

public class CreateIndexForAnimalSpecies {

 @ChangeSet(order = "1", id = "CreateIndexForAnimalSpecies", author = "Foo Bar")
 public void createIndexForAnimalSpecies(final MongockTemplate template)

   IndexOperations idx = mongockTemplate.indexOps("Australia-Animals");
   Index index = new Index().named("specieIndex").on("specie", Direction.ASC).background();
   idx.ensureIndex(index);
}

基本上这个类的工作是为命名的集合创建索引,Australia-Animals但将来如果我添加一个带有新国家前缀的新集合,我将不得不复制整段代码并更改集合的名称字符串。我尝试使用 *, $, %, 作为正则表达式,但它们都不起作用。除了获取集合名称并添加到列表中,还有其他方法contains("name")吗?

我很难做到:

Set<String> collections = mongockTemplate.getCollectionNames();
// Convert to a List<String>
for(String c: collections){
  if(c.contains("-Animals"){
     otherList.add(c);
  }
}

otherList.forEach(item -> scriptToCreateIndex(item));

它可以工作,但似乎效率很低,必须遍历集合才能完成这项工作。

4

0 回答 0