2016-03-26 18 views
0

スタック正常マングース集計リターン空の結果とMongoのコンソールで作業

db.activities.aggregate(
 
    { $match : { 'organizer': ObjectId("5408e4609640de8768c1d212") } } 
 
    , { $group : 
 
     { _id : "$organizer", 
 
     totalSwims: { $sum : 1 }, 
 
     longestSwim : { $max: "$distance" }, 
 
     moreDistanceSwim : { $max: "$duration" }, 
 
     warmestWaterSwim : { $max: "$activityWeather.waterTemperature" }, 
 
     coldestWaterSwim : { $min: "$activityWeather.waterTemperature" }, 
 
     warmestSwim : { $max: "$activityWeather.temperature" }, 
 
     coldestSwim : { $min: "$activityWeather.temperature" }}});

{ "_id" RE:のObjectId( "5408e4609640de8768c1d212")、 "totalSwims":50、 "longestSwim" 6512.997 " "22"、 "warmestSwim": "15"、 "coldestSwim": "15"}

しかし、私が試してみると、「moreDistanceSwim」:「02:35」、「warmestWaterSwim」: mongooseは常に空の配列を返しています[]私はすでにいくつかの集約関数がうまく動作していますが、なぜそれが動作していないのか分かりません。

\t activities.aggregate([ 
 
\t \t { $match : { 'organizer': userId } }, 
 
\t \t { $group : { 
 
\t \t \t _id : "$organizer", 
 
\t \t \t totalSwims: { $sum : 1 }, 
 
\t \t \t longestSwim : { $max: "$distance" }, 
 
\t \t \t moreDistanceSwim : { $max: "$duration" }, 
 
\t \t \t warmestWaterSwim : { $max: "$activityWeather.waterTemperature" }, 
 
\t \t \t coldestWaterSwim : { $min: "$activityWeather.waterTemperature" }, 
 
\t \t \t warmestSwim : { $max: "$activityWeather.temperature" }, 
 
\t \t \t coldestSwim : { $min: "$activityWeather.temperature" } 
 
\t \t } } ] 
 
\t , function(err, result){ 
 
\t \t if (err) { 
 
\t \t \t console.error('Problem %s', err); 
 
\t \t \t return next(err); 
 
\t \t } else { 
 
\t \t \t console.error('Result %j', result); 
 
\t \t \t return next(null, result); 
 
\t \t } 
 
\t });

任意のアイデア?

は、私はついにそれを考え出した任意の関連する結果なしに投稿する前にしばらくの間、検索した後、あなたは

答えて

2

申し訳ありませんありがとうございました。その場合、ちょうど文字列を送信する代わりにObjectIdメソッドでIDを確保する必要があります。

var ObjectID = require("mongodb").ObjectID; 
activities.aggregate([ 
    { $match : { 'organizer': ObjectID(userId) } }, 
+0

重複したバケットがあります(大きな問題はGitHubにあります)。それは非常に難しい検索ではありませんでした。また、あなた自身の答えをし、同時にそれを行うと、 "あなたが"本当のqusestion "を求めているように見えるので、"最初に投稿 "してから"後で答えない "。投稿する際に「自己回答」を含めることができます。 –

+0

別の依存関係を引き出す必要がないので、間違っていることもあります。 Mongooseはmongodbドライバの上に構築されています。したがって、依存関係は既に存在し、別の方法でアクセスされています。 [Moongoose aggregate $ matchはidと一致しません]の正しい方法を参照してください(http://stackoverflow.com/questions/36193289/moongoose-aggregate-match-does-not-match-ids) –

+0

Blakes、itここでスパムするつもりはありませんでした。私はあなたのフィードバックをできるだけ早くチェックします。本当に感謝しています。 –

関連する問題