如何合并/加入然后与mongodb排序

时间:2011-09-30 18:33:37

标签: mysql join mongodb

我有一个条目集合和一个域集合,如下所示

输入:

{
    {
        entry_id:1,
        title:"Title 1",
        domain_id:1
    },
    {
        entry_id:2,
        title:"Title 2",
        domain_id:1
    },
    {
        entry_id:3,
        title:"Title 3",
        domain_id:2
    }
}

域:

{
    {
        domain_id:1,
        domain:"Google",
        rank:1
    },
    {
        domain_id:2,
        domain:"Yahoo",
        rank:2
    }
}

我希望将所有信息收集在一起,并按域名的排名进行排序。来自MySQL背景我通常会加入domain_id上的条目和域,并按等级字段排序。我的一位同事建议调查map / reduce,但在做了一些阅读之后,我不确定如何在这里应用。

1 个答案:

答案 0 :(得分:3)

正如你的同事所说,Map/Reduce

MongoDB是一个基于文档的数据库。您的方案中可能需要遵循的更好的模式是将条目放入域中,看看它有多少干:

{
    {
        domain_id:1,
        domain:"Google",
        rank:1,
        entries: [
          { 
            _id: dsfdsailfub3i4b23i4b234234,
            title: "the title"
          },
          { 
            _id: dsfdsailfub3i4b23i4b234234,
            title: "the title"
          }
        ]
    },
    {
        domain_id:2,
        domain:"Yahoo",
        rank:2
    }
}

这很容易。您现在可以轻松查询某个域。现在,如果您想知道每个域有多少条目,map每个条目都返回1,而reduce所有这些条目都要找出它们的总和。

以下是what exactly is Map/Reduce的几个很棒的答案。一旦你了解了这个想法,就很容易在Mongo中实现它。