Получить все имена пользователей из элементов 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})