Springdata MongoDB在子文档中自动生成和不需要的唯一索引

时间:2014-10-11 16:17:46

标签: mongodb spring-data spring-data-mongodb

我将Doc对象存储在mongodb存储库中,确保条形码属性在整个集合中是唯一的:

@Document(collection = "Doc")
public class Doc {
  @Id  
  private String id;

  @Indexed(unique = true)
  private String barcode;
  ...
}

我还存储了一个DocAudit集合,该集合将Doc列表存储为子文档:

@Document(collection = "DocAudit")
public class DocAudit {    
  @Id  
  private String id;

  private List<Doc> docs;
  ...
}

在生成DocAudit条目时,同一个Doc可以出现在两个或多个DocAudit条目的文档列表中。

Doc对象的条形码属性上的@Indexed(unique = true)会在Doc.barcode(所需)和DocAudit.docs.doc.barcode(不需要的)上自动生成mongodb索引

避免自动生成不需要的索引的最佳方法是什么? 或者,一旦创建了不需要的索引,最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

DocAudit 当然具有 Doc 的这些属性,因为 DocAudit 是继承者。
为了实现您的目标,您可以考虑以下之一:

  • 创建另一个文档 without该注释,然后由 DocAudit继承;
  • 删除文档中的注释,并通过独立代码确保文档的索引(不推荐);

创建索引然后立即删除是不好的。