有没有办法将distinct与另一个命令结合起来,不仅可以打印不同的属性,还可以打印链接到不同属性的属性?
例如,从下表中仅打印0,foo和1,条形码。
-----------------
| id | name |
| 0 | foo |
| 1 | bar |
| 1 | bar |
我目前正在使用
>db.foo.distinct('id')
返回数据库上的id以及用于打印数学名称的内容。
答案 0 :(得分:5)
你可以尝试这个:
db.foo.group({key:{'id':1}, initial: {sum:0}, reduce:function(doc,prev){prev.sum += 1}});
答案 1 :(得分: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})