2014-04-12 80 views
1

我有一個名爲mongodb位置的集合。它有場 位置:找到mongo db獨特文檔

(_id,country,region,city,doctype,name) 

可以有多個文件(記錄)使用相同的名稱。我想查找所有文件和選擇字段

_id,doctype,and name 

具有唯一的名稱。我是mongo db的新手,請幫助我。

回答

0

做一個映射減少數是多個名稱:

db.collection.mapReduce(
    function(){emit(this.name);}, 
    function(key,values){ 
     sum=0; 
     for(var i=0;i<values.length;i++){ 
      sum+=values[i]; 
     } 
     return sum; 
    }, 
    {out:"count_per_name"} 
); 

這將創建一個名爲 「count_per_name」 集合。查詢找到與計數大於1

+0

這實際上並沒有回答這個問題。另外,mapReduce方法的運行速度比聚合框架對應的要慢得多。你應該使用這些。看到我的答案。 –

+0

你是對的!現在我必須修復我的代碼:) – gtsouk

+0

不是重點。瞭解彙總框架。它以本機代碼運行,不使用JavaScript解釋器來獲取結果。運行這段代碼比本地實現慢得多。我正在評論你,所以你實際上是在學習和理解這個概念。 –

0

您想使用的功能.aggregate$group運營商更大的名字:

db.collection.aggregate([ 
    { "$group": { 
     "_id": { 
      "_id": "$_id", 
      "doctype": " $doctype", 
      "name": "$name" 
     } 
    }} 
]) 

這是一種對SQL「GROUP」操作符的等效。有關更多示例,請參閱MongoDB手冊中的SQL TO Aggregation mapping