mongodb получение старейшего из животных карта / уменьшить - PullRequest
0 голосов
/ 07 августа 2011

Я никогда не пробовал карту / уменьшить.

Как бы я получил самое старое из каждого типа животных?

Мои данные таковы:

[
{
  "cateory": "animal",
  "type": "cat",
  "age": 4,
  "id": "a"
},
{
  "cateory": "animal",
  "type": "bird",
  "age": 3,
  "id": "b"
},
{
  "cateory": "animal",
  "type": "cat",
  "age": 7
  "id": "c"
},
{
  "cateory": "animal",
  "type": "bird",
  "age": 4,
  "id": "d"
},
{
  "cateory": "animal",
  "type": "cat",
  "age": 8,
  "id": "e"
},
{
  "cateory": "company",
  "type": "Internet",
  "age": 5,
  "id": "Facebook"
}
]

Я использую node-mongodb-native. Спасибо!

Ответы [ 2 ]

3 голосов
/ 07 августа 2011

Ваша функция карты должна выглядеть примерно так:

map = function() {
  emit({type: this.type}, {age: this.age});
}

И функция уменьшения:

reduce = function(key, values) {
  maxAge = 0;
  values.forEach(function(v) {
    if (maxAge < v['age']) {
       maxAge = v['age'];
    }
  });

  return {age: maxAge};
}
0 голосов
/ 12 августа 2011

Все довольно просто:

collection.find({type : 'animal'}).sort({animal: -1}).limit(1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...