Mongodb得到最古老的动物map/reduce



我从来没有尝试过map/reduce。

我怎样才能得到每种动物中年龄最大的?

我的数据是这样的:

[
{
  "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。谢谢!

你的map函数应该是这样的:

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

和reduce函数:

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

这很简单:

collection.find({type : 'animal'}).sort({animal: -1}).limit(1);

相关内容

  • 没有找到相关文章

最新更新