gpt4 book ai didi

spring-data - 在正确的集合中创建索引

转载 作者:行者123 更新时间:2023-12-02 03:35:13 26 4
gpt4 key购买 nike

我用 @Index(unique = true) 注释文档,如下所示:

public class ADocumentWithUniqueIndex {
private static final long serialVersionUID = 1L;

@Indexed(unique = true)
private String iAmUnique;

public String getiAmUnique() {
return iAmUnique;
}

public void setiAmUnique(String iAmUnique) {
this.iAmUnique = iAmUnique;
}
}

保存对象时,我指定了一个自定义集合:

MongoOperations mongoDb = ...

mongoDb.save(document, "MyCollection");

结果我得到:

  • “我的收藏”中的新文档
  • 集合“ADocumentWithUniqueIndex”中的一个索引

如何在“MyCollection”中创建索引而不用在注释中明确指定它?

背景:

  • 默认的集合名称在我们的用例中过于模糊。我们不能保证不会有两个同名但不同包的文档。所以我们将包名添加到集合中。
  • 将文档映射到集合在基础结构组件中处理。
  • 集合名称等实现细节不应泄露到各个文档中。
  • 我知道这有点“抽象之上的抽象”的味道,但这是必需的,因为我们必须支持 MongoDb 和 Windows Azure blob 存储。不过现在不是了……

这似乎是一种相当标准的方法,可以在基础结构组件中隐藏持久性细节。对该方法的任何评论也表示赞赏。

最佳答案

为要存储的对象定义集合,然后期望索引注释起作用,这有点不寻常。这里有几个选项:

  1. ADocumentWithUniqueIndex 上使用@Document 并手动配置集合名称。这当然会导致该类的所有对象持久保存到该集合中。

  2. 通过 MongoOperations.indexOps() 手动创建索引到您要使用的集合中。这与您在持久性操作期间手动确定集合名称的方法更加一致。

关于spring-data - 在正确的集合中创建索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23942469/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com