Представление Spring Data mongodb

Мы используем 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.

Теперь мы хотим сделать конечные точки REST API, которые будут возвращать агрегированные данные 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 из коробки? Есть ли лучший способ добиться этого?


person Yan Khonski    schedule 17.01.2020    source источник


Ответы (1)


Да, есть несколько репозиториев, таких как JpaRepository для MongoDB. Сначала вам нужно получить драйвер mongo и установить некоторые свойства для вашего соединения в application.properties из вашего весеннего загрузочного приложения:

1. spring.data.mongodb.username= [your username] 2. spring.data.mongodb.password= [your password] 3. spring.data.mongodb.database= [your database] 4. spring.data.mongodb.port=27017 5. spring.data.mongodb.host=localhost

Я намеренно оставил порт и хост, потому что по умолчанию сервер MongoDB открывается на порту 27017 и хосте localhost.

После этого вы можете создать несколько репозиториев, расширив MongoRepository<MODEL,ID>, например, здесь

person user1234SI.    schedule 17.01.2020
comment
ОК, но приложение уже подключено к базе данных. Мой вопрос касается функций представления Spring Data monogo db. Если он доступен из коробки вместо написания кода самостоятельно? - person Yan Khonski; 17.01.2020