2014-11-22 61 views
1

我的代码是:

db.essays.aggregate({ 
    $match: { 
    essayId: 3 
    }, 
    $group: { 
    _id: { 
     year: { 
     $year: '$essayTime' 
     }, 
     month: { 
     $month: '$essayTime' 
     }, 
     day: { 
     $dayOfMonth: '$essayTime' 
     } 
    }, 
    count: { 
     $sum: 1 
    } 
    } 
}); 

它返回一个错误:"exception: A pipeline stage specification object must contain exactly one field."

但是,如果我这样做没有$match,则返回预期。我究竟做错了什么?

回答

3

将每个流水线阶段到它自己的对象的阵列中:

db.essays.aggregate([ 
    { $match: { 
    essayId: 3 
    }}, 
    { $group: { 
    _id: { 
     year: { 
     $year: '$essayTime' 
     }, 
     month: { 
     $month: '$essayTime' 
     }, 
     day: { 
     $dayOfMonth: '$essayTime' 
     } 
    }, 
    count: { 
     $sum: 1 
    } 
    }} 
]);