我从来没有尝试过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);