Декларация Spring Data MongoDB для поля поля - PullRequest
0 голосов
/ 11 июня 2018

У меня есть следующий документ Spring Data MongoDB:

@Document(collection = "messages")
@CompoundIndexes({ @CompoundIndex(name = "chatId_messageId", def = "{'chatId': 1, 'messageId': 1}") })
public class Message implements Serializable {

    private static final long serialVersionUID = -1590112217771926691L;

    @Id
    private String id;

    private Long chatId;

    private Integer messageId;

    private Post post;

}

модель Post (, которая не является документом Spring Data MongoDB ) выглядит следующим образом:

public class Post implements Serializable {

    private static final long serialVersionUID = -886664249197573502L;

    private String id;

}

Я хотел бы добавить индекс в поле Message.post.id.

Как это можно сделать с помощью Spring Data MongoDB и Message.post объявление поля в Message документе?

1 Ответ

0 голосов
/ 11 июня 2018

Если вы хотите добавить Message.post.id к уже составному индексу, сделайте это следующим образом:

@Document(collection = "messages")
@CompoundIndexes({ @CompoundIndex(name = "chatId_messageId", def = "{'chatId': 1, 'messageId': 1, 'Message.post.id' : 1}") })
public class Message implements Serializable {

    private static final long serialVersionUID = -1590112217771926691L;

    @Id
    private String id;

    private Long chatId;

    private Integer messageId;

    private Post post;

}

Составные индексы - это индексы, которые имеют более одного индексированного поля, поэтому в идеале самое ограничительное поле должнобыть слева от B-дерева.Например, если вы хотите индексировать по полу и рождению, индекс должен начинаться с рождения, так как он намного более строг, чем пол.

Или если вы хотите рассматривать его как отдельный индекс, то создайте индексиспользуя @Indexed как

    public class Post implements Serializable {

    private static final long serialVersionUID = -886664249197573502L;

    @Indexed
    private String id;
}

Обновлено

Для получения дополнительной информации о том, как работают запросы с подполями составного индекса, проверьте Документация

...