2011-11-12 14 views
4

私は、Webアプリのnodejs、マングースのODM、およびモンゴを使用していますし、マングースでスタイルのクエリ「でグループ」を実行しようとして問題に実行しています:私は「mymodel.collectionを実行する場合Mongoosejsを使用してクエリでグループを書き込む方法は?

var results = mymodel.collection.group (
{ 
    keyf: 
     function(doc) 
     { 
       var m = doc.date.getMonth(); 
       var d = doc.date.getDate(); 
       var y = doc.date.getFullYear(); 
       return { date: m + "/" + d + "/" + y }; 
     }, 
    cond: {}, 
    reduce: function(doc,prev) { prev.total += doc.value; }, 
    initial: { total: 0 } 
} 
); 
if(results == null) 
{ 
    console.log("results is null\n"); 
} 

。グループコードをmongoシェルで使用すると、完全に動作します。しかし、nodejs/mongooseでは、mongooseドキュメンテーションは、直接のmongoコードがネイティブmongoドライバに対して実行可能であると述べていますが、null結果を返すようです。

解決方法はありますか?

答えて

1

私はMongooseでそれをやっています。それを行うには、連鎖呼び出しを作成し、コールバックでreduceを行う必要があります。したがって、上記の

var foo = function(name, callback){ 
Model.where('user', name). 
     select('points'). 
     run(callback); 
} 

マップであり、その後削減、私は同様の問題を抱えていた、と私は集約フレームワークでこれを行うことができた瞬間

+0

ありがとうございます!私はこれを試してみる。 – iancormac

-1

で私のニーズのために働く

foo(name, function(errors, docs){ 
       var score = 0; 
       for (var i=0; i < docs.length; i++){ 
        score += docs[i].points; 
       }); 

です。

mymodel.collection.aggregate( { $match : CONDITION }, { $group : _id : { year : { $year : "$date"}, month : { $month : "$date"}, day : { $dayOfMonth : "$date"} }, count : { $sum : 1 } }, { $project : { date : { year : "$_id.year", month : "$_id.month", day : "$_id.day" } }, { $sort : { "date.year" : 1, "date.month" : 1, "date.day" : 1 } }, function(err, res) { ..callback function..} );

+0

答えの説明を入力してください。 – Spidy

関連する問題