MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Wie verwende ich Spring Data Mongo @CompoundIndex mit Untersammlungen?

Ich habe diese Art von zusammengesetztem Index in meiner App ausprobiert, die auch Federdaten verwendet, und funktionierte einwandfrei. Sie müssen nur die Indexdefinition in @CompoundIndex korrigieren Anmerkung:

@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;
  ...
} 

Wenn Sie eine Abfrage mit EXPLAIN (wie die folgende) in der Mongo-Shell ausführen, sehen Sie, dass der Index *aid_bid_idx* verwendet wird.

db.doc_a.find({ "id" : 1, "b.id" : 1}).explain()

Das Ergebnis sieht in etwa so aus:

{
    "cursor" : "BtreeCursor aid_bid_idx",
    ...
}