2013-04-11 40 views
0

所以我試圖讓我的數據按月平均分解,並且遵循了我在一些SO帖子上看到的模式,但是它返回爲null爲_id結果,我似乎無法理解爲什麼。我的模型中的日期確實是日期類型。在Mongo Aggregation查詢中創建的屬性的預計_id爲空的結果

{ 
$match: { 
    date: {$gte: startDate, $lte: endDate } 
}, 
$project: { 
    'date': 1 
    , 'fatigue.percent': 1 
    , 'fitness.percent': 1 
    , 'maintenance.percent': 1 
    , 'substances.percent': 1 
    , 'unsafe.percent': 1 
    , 'created_on': { 
     month: { '$month': '$date' } 
    } 
} 
,$group: { 
     _id: '$created_on' 
    , averageFatigue: {$avg : '$fatigue.percent'} 
    , averageFitness: {$avg : '$fitness.percent'} 
    , averageMaintenance: {$avg : '$maintenance.percent'} 
    , averageSubstances: {$avg : '$substances.percent'} 
    , averageUnsafe: {$avg : '$unsafe.percent'} 
    } 
} 
+0

你嘗試用術語月:{$月:「$日期'}? (請注意$月運營商周圍沒有引號) – 2013-04-11 17:53:18

+0

剛剛嘗試過,沒有幫助。 – dariusriggins 2013-04-11 20:55:42

回答

2

爲$項目和$組管道運算符表達式必須用像$匹配花括號:

db.test.aggregate(
{ 
    $match: { 
      date: {$gte: startDate, $lte: endDate } 
      } 
}, 
{ 
    $project: { 
    'date': 1 
    , 'fatigue.percent': 1 
    , 'fitness.percent': 1 
    , 'maintenance.percent': 1 
    , 'substances.percent': 1 
    , 'unsafe.percent': 1 
    , 'created_on': { 
        month: { '$month': '$date' } 
        } 
    } 
}, 
{ 
    $group: { 
     _id: '$created_on' 
    , averageFatigue: {$avg : '$fatigue.percent'} 
    , averageFitness: {$avg : '$fitness.percent'} 
    , averageMaintenance: {$avg : '$maintenance.percent'} 
    , averageSubstances: {$avg : '$substances.percent'} 
    , averageUnsafe: {$avg : '$unsafe.percent'} 
    } 
} 
) 
+0

完美的作品,謝謝! – dariusriggins 2013-04-12 01:56:49

相關問題