MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como usar o spring data mongo @CompoundIndex com subcoleções?


Eu tentei esse tipo de índice composto em meu aplicativo, que também usa dados de mola, e funcionou corretamente. Você só precisa corrigir a definição de índice em @CompoundIndex anotação:
@CompoundIndex(name = "aid_bid_idx", def = "{'id' : 1, 'b.id' : 1}")
@Document(collection = "doc_a")
public class A {    
  @Field("id")
  private Integer id;

  @Field("b")
  private Collection<B> b;
  ...
}

public class B {    
  @Field("id")
  private Integer id;
  ...
} 

Se você executar uma consulta com explicação (como a seguir) no shell do mongo, verá que o índice *aid_bid_idx* será usado.
db.doc_a.find({ "id" : 1, "b.id" : 1}).explain()

O resultado será algo assim:
{
    "cursor" : "BtreeCursor aid_bid_idx",
    ...
}