Мои коллекции 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
?