MongoDB отлично справляется, прочно удерживая престижное 5-е место на сайте рейтинга db-двигателей. Это означает, что мы, разработчики, часто им пользуемся.
При просмотре официального API драйвера мы видим попытку сделать API как можно более плавным:
collection.find(and(gte("stars", 2), lt("stars", 5), eq("categories", "Bakery")));
Тем не менее, есть много проблем:
- Все поля являются строками без автоматического заполнения.
- Нет безопасности типов для операторов (является ли
звезды
числом?! Является ликатегории
набором (?!) строк или…?!). - Действительно ли нам нравится использовать
get
для>=
?! Я имею в виду, легко ли читать и понимать это выражение? - И, наконец, когда схема меняется, мы возвращаемся к 80′ с помощью find-replace…
Существует простое и эффективное решение этих проблем — FluentMongo , которое добавляет недостающий компонент в безопасность API—типа и интеграцию Java. Это позволяет вам использовать обычную Java для написания фильтров, прогнозов, обновлений, сортировок и индексов. Например:
collection.find(builder.filter(r -> r.getStars() >= 2 && r.getStars() < 5 && r.getCategories().contains("Bakery")));
Вы можете быть одновременно продуктивным с MongoDB и писать поддерживаемый код прямо сейчас!
Оригинал: “https://dev.to/kostat/fluent-mongodb-queries-from-java-4okm”