Как я могу объединить / объединить, а затем отсортировать с mongodb - PullRequest
1 голос
/ 30 сентября 2011

У меня есть коллекция записей и коллекция доменов, подобная следующей

запись:

{
    {
        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 и сортирую по полю ранга. Один из моих коллег предложил посмотреть на карту / уменьшить, но после прочтения я не уверен, как применить это здесь.

1 Ответ

3 голосов
/ 01 октября 2011

Как сказал ваш коллега, 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 всех этих, чтобы узнать их сумму.

Вот несколько отличных ответов на что именно такое Map / Reduce .Как только вы обоснуетесь с идеей, ее будет легко реализовать в Mongo.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...