Если вы хотите добавить 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;
}
Обновлено
Для получения дополнительной информации о том, как работают запросы с подполями составного индекса, проверьте Документация