Я использую 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.
Пожалуйста, дайте мне другое решение для этого.