Избегайте создания составного индекса в поле Spring MongoDB Document - PullRequest
0 голосов
/ 26 марта 2020

Мои коллекции MongoDB настроены как доменные классы с аннотацией @Document. Вот два таких @Document s.

@Document
@CompoundIndex(def = "{'name': 1, 'group': 1}", name = "source_name_group_composite", unique = true)
class Source {
    String name;
    String group;
}

@Document
class Problem {
    String title;
    Source source;
}

. Spring настроен для автоматического создания индексов в MongoDB. Я ожидал, что CompoundIndex из второй строки в блоке выше будет создан автоматически, и он сделал:

> db.source.getIndexes()
[
        {
                "v" : 2,
                "key" : {
                        "_id" : 1
                },
                "name" : "_id_",
                "ns" : "mobtools.source"
        },
        {
                "v" : 2,
                "unique" : true,
                "key" : {
                        "name" : 1,
                        "group" : 1
                },
                "name" : "source_name_group_composite",
                "ns" : "mobtools.source"
        }
]

Но это также создает тот же составной индекс в поле Problem.source:

> db.problem.getIndexes()
[
        {
                "v" : 2,
                "key" : {
                        "_id" : 1
                },
                "name" : "_id_",
                "ns" : "mobtools.problem"
        },
        {
                "v" : 2,
                "unique" : true,
                "key" : {
                        "source.name" : 1,
                        "source.group" : 1
                },
                "name" : "source.source_name_group_composite",
                "ns" : "mobtools.problem"
        }
]

Я не хочу, чтобы индекс source.source_name_group_composite создавался. Есть ли способ сообщить Spring о создании составного индекса в коллекции source, но не в поле source коллекции problem?

...