Как я могу выполнить более сложные запросы на MongoDB в Spring Boot - PullRequest
0 голосов
/ 18 декабря 2018

Я переключаюсь с Postgres на MongoDB в моем приложении Spring Boot.Мне выпала привилегия иметь возможность запрашивать мою базу данных, используя собственные запросы с помощью аннотации @Query:

@Query(value = "SELECT id\n" +
        "FROM ( \n" +
        "SELECT DISTINCT CASE sender WHEN 1 THEN recipient ELSE sender END AS friend_id \n" +
        "FROM friendrequest WHERE 1 IN (recipient, sender) \n" +
"AND friendrequeststatus = 'ACCEPTED' \n" +
        ") f \n" +
        "LEFT JOIN users u\n" +
        "ON f.friend_id = u.id\n" +
        "ORDER BY friend_id \n-- #pageable\n"
        ,nativeQuery = true)
Page<User> getFriends(Pageable pageable);

В настоящее время я переключаюсь на MongoDB и Inam, используя те же модели.Можно ли писать расширенные собственные запросы, используя метод @Query, или я вынужден использовать объект Query:

    user = mongoTemplate.findOne(
  Query.query(Criteria.where("name").is("Jack")), User.class);

Я задал этот вопрос, потому что я не видел ни одной статьи по сборке.сложные запросы с MongoDB и Spring Boot.

1 Ответ

0 голосов
/ 18 декабря 2018

Во-первых, вам нужно понять разницу между RDBMS и NoSQl.Вы можете сослаться на этот вопрос .

Существует значительная разница между SQL и NoSQL при запросах.Например, MySQl имеет ключевое слово запроса select, а MongoDb имеет функцию find({}) для получения того же результата.

Хотя более ранние версии MongoDb не могут выполнять агрегирование, эквивалентное запросам соединения SQL, последние версии(> = 3.2) разрешить это из $lookup.См. Документация .Также агрегаты MongoDb помогут для кода, приведенного в вопросе.

Имея представление о NoSql и MongoDb, вы можете использовать Spring MongoDB со сложными запросами.Проверьте этот ответ как краткую тренировку со Spring и MongoDb.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...