2012-06-25 42 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}});