Mongorepository данных Spring, поиск по внутреннему полю объекта - PullRequest
0 голосов
/ 20 марта 2019

Я разрабатываю простую социальную сеть, и мне нужна помощь с запросом к mongorepository.У меня есть 2 документа:

@Document(collection = "post")
public class Post {
    ...........
    @DBRef
    @Field("settings")
    private Settings settings;

и

@Document(collection = "settings")
public class Settings {
    ..............
    @Field("privacy_settings")
    private PrivacySettings privacySettings;
}

PrivacySettings - это перечисление с настройками ONLY_ME, EVERYONE, FRIENDS.

ИСитуация такова: друг просматривает мою страницу и видит мои сообщения с правильными настройками конфиденциальности (и т. д. он может видеть только сообщения с настройками конфиденциальности: ВСЕ, ДРУЗЬЯ, но не ONLY_ME).Идеи, как решить эту проблему?Как создать правильный запрос?

1 Ответ

2 голосов
/ 25 марта 2019

Решение 1
В Mongo вы не можете query из DbRef полей, кроме Id, поскольку в этом случае join не поддерживается.Поскольку read operation очень высоко, я рекомендую вам embed часть Setting документа в Post вместо ссылки на него.Как следует из схемы БД mongo, если read > write, вам следует embed документ.В этом случае запрос будет простым.

Решение 2
Вы можете запустить два запроса БД, 1-й в разделе «Настройка документа», чтобы получить Setting с EVERYONE, FRIENDS запросом make.для публикации документа, чтобы получить все сообщения с установкой in запроса.

Решение 3
Вы можете использовать QueryDSL для запроса по объекту DbRef легко для справки см. это.

...