2012-06-25 31 views
0

有没有一种方法可以将distinct与另一个命令结合起来,不仅可以打印不同的属性,还可以打印与不同的属性链接的属性?mongoDB独特返回多个属性

例如,从下表中仅打印0,foo和1条。

----------------- 
| id | name | 
| 0 | foo | 
| 1 | bar | 
| 1 | bar | 
我目前使用

>db.foo.distinct('id') 

到一个数据库返回的id,什么

用它来打印mathcing名。

+0

为什么不'(0,富)'和'(1,富)' ? –

+0

你可以用map-reduce来做到这一点 –

+0

@SergioTulentsev我只是把错误的名字抱歉。 –

回答

4

可以按如下方式与MapReduce的实现这一点:

map = function(){ 
    emit(this.id+","+this.name, {id: this.id, name: this.name}) 
} 
reduce = function(key, values){ 
    return {"id": values[0].id, "name": values[0].name}; 
} 
db.mycollection.mapReduce(map, reduce, {out: "myresult_collection"}) 
db.myresult_collection.find({}, {value: true, _id: false}) 
5

你可以尝试这一个:

db.foo.group({key:{'id':1}, initial: {sum:0}, reduce:function(doc,prev){prev.sum += 1}});