Mongoosejsを使ってクエリでグループを書く方法は?

私はnodejs、mongoose odm、およびmongoをWebアプリケーション用に使用しており、mongooseで
“group by”スタイルのクエリを実行しようとする問題にぶつかっています。

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 nulln");
}

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

誰にどのように解決する方法がありますか?

ベストアンサー

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

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

したがって、上記は地図であり、次に

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

それは私のニーズのために今働いています

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です