问题描述
我的数据库中有一些具有“动态名称”的集合,
假设我有一些集合存储来自特定国家/地区的动物数据,
因此,在我的数据库 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));
它有效,但似乎效率很低,必须遍历集合才能完成这项工作。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)