从项目user_id获取所有用户名? (Mongodb查询)

时间:2015-05-24 14:54:33

标签: mongodb normalization dbref

我的申请排行榜遇到了一些困难。 我有一个包含两个集合的数据库。

  • 用户

在我的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 个答案:

答案 0 :(得分:2)

您可以在MongoDB的Database References文档中找到有用的信息。

在MongoDB中使用来自不同集合的字段时要考虑的第一件事是:

  

MongoDB不支持联接。在MongoDB中,一些数据被非规范化,或者与文档中的相关数据一起存储以消除对连接的需要。但是,在某些情况下,将相关信息存储在单独的文档中是有意义的,通常是在不同的集合或数据库中。

在您的情况下,您可能需要考虑将来自Fish集合的信息作为嵌入文档存储在用户集合中的用户中。

如果这不是一个选项,那么您可能希望使用Manual References或循环遍历Fish集合中查询结果中提供的user_ids。

使用第二个选项,您可以使用查询从User集合中获取相应的用户名,例如:

Users.find({user_id:<USER_ID>},{username:1})