यह आपके द्वारा देखे जा रहे परिणाम नहीं बनाने चाहिए, लेकिन आपको client_id
शामिल करने की आवश्यकता है आपके $project
. में ऑपरेटर ताकि यह $group
. के लिए उपलब्ध हो ऑपरेटर।
'$project' => array(
'client_id' => 1,
'hour' => array(
'years' => array( '$year' => '$ts' ),
'months' => array( '$month' => '$ts' ),
'days' => array( '$dayOfMonth' => '$ts' ),
'hours' => array( '$hour' => '$ts' ),
)
),
मेरे द्वारा उस परिवर्तन को करने के बाद शेल समकक्ष ने काम किया:
db.test.aggregate(
{ $project: {
hour: {
years: {$year: '$ts'},
months: {$month: '$ts'},
days: {$dayOfMonth: '$ts'},
hours: {$hour: '$ts'}
},
client_id: '$client_id'
}},
{ $group: {
_id: { client_id: '$client_id', hour: '$hour' },
number: { $sum: 1}
}})
लौटा:
{
"result": [
{
"_id": {
"client_id": "12345667889",
"hour": {
"years": 2013,
"months": 1,
"days": 2,
"hours": 7
}
},
"number": 1
}
],
"ok": 1
}