Получить все имена пользователей из элементов user_id? (Запрос Mongodb)

У меня возникли некоторые трудности с моим списком лидеров для моего приложения. У меня есть база данных с двумя коллекциями.

  • пользователей
  • Рыба

В моей коллекции Fish также есть user_id. Когда я получаю всю рыбу, я получаю все, включая user_id. Однако user_id мне не очень помогает, я хочу отобразить имя пользователя, принадлежащее этому user_id.

Вот так выглядит мой запрос.

Fish.find().sort({weight: -1}).limit(10).exec(function(err, leaderboard) {
        if(err) return res.json(500, {errorMsg: 'Could not get leaderboard'});

        res.json(leaderboard);
    })

Я чувствую, что мне нужно сделать еще один запрос, чтобы получить все имена пользователей, принадлежащие user_ids, которые я получаю из первого запроса. Возможно, использовать цикл как-то?

MongoDb довольно нов для меня и не знает, что искать. Любые советы, советы, ссылки очень приветствуются.

1 ответ

Вы можете найти полезную информацию в документации по базе данных MongoDB.

Первое, что нужно учитывать при использовании полей из разных коллекций в MongoDB:

MongoDB не поддерживает объединения. В MongoDB некоторые данные денормализованы или хранятся вместе со связанными данными в документах, что устраняет необходимость в объединениях. Однако в некоторых случаях имеет смысл хранить связанную информацию в отдельных документах, обычно в разных коллекциях или базах данных.

В вашем случае вы можете рассмотреть вопрос о сохранении информации из коллекции Fish в качестве встроенных документов среди пользователей из коллекции User.

Если это не вариант, вы можете использовать ручные ссылки или циклически перебирать user_ids, предоставленные в результате запроса по коллекции Fish.

Во втором варианте вы можете использовать запрос для получения соответствующих имен пользователей из коллекции User, таких как:

Users.find({user_id:<USER_ID>},{username:1})
Другие вопросы по тегам