2012-04-23 6 views
15

でユニークを取得するために減らすMongoDBのマップの日付と番号でグループにしようとした日付/日

私の文書

{ "_id" : ObjectId("4f956dee76ddb26752026e8f"), "request" : "default", "options" : "1", "keyword" : "somekey", "number" : "5b234b79-4d70-437e-8eef-32a2941af40a", "date" : "20120423200446", "time" : 1335193066 } 

私のクエリ

map = "function() { var date = new Date(this.time * 1000); var key = date.getFullYear() + date.getMonth() + date.getDate(); emit({day : key, number: this.number}, {count: 1}); }" 

reduce = "function(key, values) { var count = 0; values.forEach(function(v) { count += v['count']; }); return {count: count}; }" 

db.txtweb.mapReduce(map, reduce, {out: "pageview_results"}); 

私のエラー

uncaught exception: map reduce failed:{ "errmsg" : "ns doesn't exist", "ok" : 0 } 

私は何をwronを把握することはできませんg、しかし、私はそれが日付機能で何かをしていると思う。

アイデア

答えて

27

ns doesn't existは、存在しないデータベースまたはコレクションにアクセスしていることを示します。

 db.payments.mapReduce(
      function() { 
       var k = new Date(this.payment_time); 
       k.setMinutes(0); 
       k.setSeconds(0); 
       k.setMilliseconds(0); 
       emit(k, this.amount); 
      }, 
      function (key, vals) { 
       var total = 0; 
       for (var i = 0; i < vals.length; i++) { 
        total += vals[i]; 
       } 
       return total; 
      }, 
      { 
       out : {merge : "resultName" } 
      } 
    ); 
    } 
}; 
+0

nsが存在しません。存在しないデータベースまたはコレクションにアクセスしています。名前を確認する...これが問題だった。ありがとう – Anand

+0

私はnodejsエラーでそれを実行しようとすると、以下のエラーが表示されます:MongoError:例外:マップ呼び出しが失敗しました:JSエラー:ReferenceError:クローン が定義されていませんnofile_b:1 – peter

+0

はい。クローンは元の日付オブジェクトの変更を避けるために使用されます。私はクローン機能の実装をスキップしました。代わりにこれを使うことができます - 新しいDate(this.getTime()); – Anton

5

に(時間なし)日によってグループthis.amount以下自分の名前

スクリプトを確認し、スクリプトを実行し、データベース

use your_database_name; 

注意を選択するのを忘れたときにこれが主に起こりますデータベースを選択する行。

関連する問題