2017-03-31 9 views
0

このMeteorサーバーコードは、文書をグループ化し、「期間」の昇順でソートしようとしますが、それを修正する方法はありません。 THXmeteorhacksで文書を並べ替える方法:集計出力

let invoicePopulation = UsageCol.aggregate([ 
     { 
      $match: { 
      action: {$in: ['a', 'b', 'c']}, 
      userId: doc.userId 
      } 
     }, 
     { 
      $group: { 
      _id: {period: "$period"}, 
      count: {$sum: 1} 
      } 
     }, 
     { 
      "$sort" : { 
      "period" : 1 
      } 
     } 
     ]); 

     //output 
     [{"_id":{"period":"42017"},"count":14},{"_id":{"period":"22017"},"count":1},{"_id":{"period":"32017"},"count":271}] 

//needs to be 
[{"_id":{"period":"22017"},"count":1},{"_id":{"period":"32017"},"count":271},{"_id":{"period":"42017"},"count":14}] 

答えて

1

はあなたの$groupは私には奇妙に見えます。通常、特定のフィールドでグループ化したい場合、そのフィールドは_idになります(これはフィールドが一意であるためです)。

あなたのコードにある方法は、サブ文書を_idの値として設定しています。それが本当にあなたが望むものなら、あなたの$sortはこれでなければなりません。あなたは_idサブ文書を作成しようとしていない場合は

{ 
    $sort: { 
    "_id.period": 1 
    } 
} 

、あなたはこのようなあなたの$groupを修正する必要があります。

let invoicePopulation = UsageCol.aggregate([ 
    { 
    $match: { 
     action: {$in: ['a', 'b', 'c']}, 
     userId: doc.userId 
    } 
    }, 
    { 
    $group: { 
     _id: "$period", 
     count: {$sum: 1} 
    } 
    }, 
    { 
    $sort : { 
     "period" : 1 
    } 
    } 
]); 
関連する問題