Мы используем Spring Data mongodb версии 2.1.3.
У нас есть две коллекции cities
и countries
.
@Document
public class City {
private String name;
private ObjectId id;
private ObjectId countryId;
}
@Document
public class Country {
private String name;
private ObjectId id;
}
У нас есть хранилища базы данных, расширяющие org.springframework.data.mongodb.repository.MongoRepository
.
Теперь мы хотим создать конечные точки API REST, которые бы возвращали агрегированные данные CityCountryDto
. По этой причине мы хотим сделать доступным только для чтения представление cityCountry
https://docs.mongodb.com/manual/reference/method/db.createView/
db.createView (
"cityCountry",
"city",
[
{ $lookup: { from: "country", localField: "countryId", foreignField: "id", as: "country_docs" } },
{ $project: { "country_docs._id": 0} }
]
)
Мы попробовали
@Document
CityCountry extends City {
private Country country;
}
Примечание, чтобы оно работало Нам нужно было либо создать представление, прежде чем мы запустим приложение в базе данных, либо нам пришлось использовать инструмент регистрации изменений данных (например, Flyway, liquibase или mongobee). Чтобы упростить задачу, учтите, что представление существовало в базе данных до того, как мы запустили приложение.
Мой вопрос, есть ли представление поддержки данных Spring из коробки? Есть ли лучший способ добиться этого?