我的申请排行榜遇到了一些困难。 我有一个包含两个集合的数据库。
在我的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对我来说很新鲜,并不知道该找什么。 任何建议,提示,链接都很受欢迎。
答案 0 :(得分:2)
您可以在MongoDB的Database References文档中找到有用的信息。
在MongoDB中使用来自不同集合的字段时要考虑的第一件事是:
MongoDB不支持联接。在MongoDB中,一些数据被非规范化,或者与文档中的相关数据一起存储以消除对连接的需要。但是,在某些情况下,将相关信息存储在单独的文档中是有意义的,通常是在不同的集合或数据库中。
在您的情况下,您可能需要考虑将来自Fish集合的信息作为嵌入文档存储在用户集合中的用户中。
如果这不是一个选项,那么您可能希望使用Manual References或循环遍历Fish集合中查询结果中提供的user_ids。
使用第二个选项,您可以使用查询从User集合中获取相应的用户名,例如:
Users.find({user_id:<USER_ID>},{username:1})