Помогите с картой уменьшить в MongoDB - PullRequest
0 голосов
/ 19 июля 2011

Я изо всех сил пытаюсь получить четкое представление о том, как работает карта и когда ее использовать. Я получаю некоторые случайные результаты, которые просто не имеют смысла, но, может быть, мое понимание mapreduce неверно?

Вот пример того, что я делаю.

У меня есть коллекция из более чем 15000 городов Великобритании со следующей структурой;

{
  "_id" : ObjectId("4e234105e138231a7f000004"),
  "county" : "Powys",
  "name" : "Abbey-Cwmhir",
  "location" : {
    "latitude" : 52.3298355191946,
    "longitude" : -3.39230306446552
  }
}

В каждом округе много городов, и я хотел бы получить новую коллекцию со следующей структурой для каждого округа;

{
  "_id" : "Powys",
  "towns" : [
    {
      "name" : "Abbey-Cwmhir",
      "loc" : [52.3298355191946, -3.39230306446552]
    },
    //.. etc.
  ]
}

Итак, я думаю, что уменьшение карты - идеальный кандидат для этого права? Если да, то как бы правильно составить карту и сократить функции?

1 Ответ

2 голосов
/ 19 июля 2011

В качестве отправной точки вы можете использовать что-то вроде этого:

Функция карты

function() {
  emit( this.county,{ 
          towns: [ 
            { 
              name: this.name, 
              loc: this.location 
            }
          ]
        } ); 
}

Функция уменьшения

function(key, values) {
  result = { towns: [] }; 
  values.forEach( 
    function( townsgroup ) {
      townsgroup.towns.forEach( 
        function( town ) {
          result.towns.push( town );
        });
    });
  return result;
}

Спасибо dcrosta за исправление.

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