MongoRepository получить только конкретное поле в результате - PullRequest
0 голосов
/ 02 мая 2019

Я использую Mongodb в Spring Web. И использовать MongoRepository для CRUD

У меня было: Коллекция: Пользователь

Позже мне пришлось создать группу. потому что я не должен и не могу встроить пользователя в группу. Я создаю новую коллекцию как имя SQL: GroupUser. Здесь я использую:

    @Field("groupId")
    private String groupId;
    @DBRef
    private User user;

это поможет запросить список пользователей в группе (запросить данные и автоматически получить содержимое пользователя)

Но так как я хочу получить список Идентификатор пользователя. Обычно в SQL мы можем сделать так:

select user.id from GroupUser where groupId = ?1

Итак, я обнаружил, что мы можем уменьшить и просто получить поле выбора, например

    @Query(value = "{ 'groupId' :  ?0 }", fields = "{ '_id': 0, 'user.$id':1 }")
    List<String> findAllUserIdByGroupId(String groupId);

но результат в формате JSON:

{Object :{ User: {$id: "ObjectID in Hexa"} } }

~> Поэтому, если я хочу получить список ObjectId, мне нужно создать карту или цикл для его преобразования. ~> Это совсем не хорошо

Так что я пытаюсь найти больше решений:

Этот вопрос дает мне идею создать новую модель возврата.

db.getCollection('groupuser').aggregate([ { $project : { _id:0 , "newId" : "$user" }} ])

этот newID может ссылаться на $user, но если я изменю его, чтобы получить UserId $user.$id ~> это даст ошибку.

Так что, просто используя команду mongo, я не могу получить то, что хочу, как SQL.

Пожалуйста, дайте мне другое решение для этого.

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