mongoDB distinct返回多个属性

时间:2012-06-25 10:09:44

标签: mongodb

有没有办法将distinct与另一个命令结合起来,不仅可以打印不同的属性,还可以打印链接到不同属性的属性?

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

-----------------
|  id  |  name  |
|  0   |  foo   |
|  1   |  bar   |
|  1   |  bar   |

我目前正在使用

>db.foo.distinct('id')

返回数据库上的id以及用于打印数学名称的内容。

2 个答案:

答案 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})