1

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

例如,仅打印下表中的 0,foo 和 1,bar。

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

我目前正在使用

>db.foo.distinct('id')

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

4

2 回答 2

6

你可以试试这个:

db.foo.group({key:{'id':1}, initial: {sum:0}, reduce:function(doc,prev){prev.sum += 1}});
于 2012-06-26T08:28:52.183 回答
5

您可以使用 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})
于 2012-06-26T00:48:00.860 回答