У меня есть агрегация, которая группируется по дате и создает сумму.MongoDB агрегат с использованием отдельных
db.InboundWorkItems.aggregate({
$match: {
notificationDate: {
$gte: ISODate("2013-07-18T04:00:00Z")
},
dropType: 'drop'
}
}, {
$group: {
_id: {
notificationDate: "$notificationDate"
},
nd: {
$first: "$notificationDate"
},
count: {
$sum: 1
}
}
}, {
$sort: {
nd: 1
}
})
Выход
"result" : [
{
"_id" : {
"notificationDate" : ISODate("2013-07-18T04:00:00Z")
},
"nd" : ISODate("2013-07-18T04:00:00Z"),
"count" : 484
},
{
"_id" : {
"notificationDate" : ISODate("2013-07-19T04:00:00Z")
},
"nd" : ISODate("2013-07-19T04:00:00Z"),
"count" : 490
},
{
"_id" : {
"notificationDate" : ISODate("2013-07-20T04:00:00Z")
},
"nd" : ISODate("2013-07-20T04:00:00Z"),
"count" : 174
},
{
"_id" : {
"notificationDate" : ISODate("2013-07-21T04:00:00Z")
},
"nd" : ISODate("2013-07-21T04:00:00Z"),
"count" : 6
},
{
"_id" : {
"notificationDate" : ISODate("2013-07-22T04:00:00Z")
},
"nd" : ISODate("2013-07-22T04:00:00Z"),
"count" : 339
},
{
"_id" : {
"notificationDate" : ISODate("2013-07-23T04:00:00Z")
},
"nd" : ISODate("2013-07-23T04:00:00Z"),
"count" : 394
},
{
"_id" : {
"notificationDate" : ISODate("2013-07-24T04:00:00Z")
},
"nd" : ISODate("2013-07-24T04:00:00Z"),
"count" : 17
}
],
"ok" : 1
до сих пор так хорошо. Теперь мне нужно сделать это, но также добавить четкие критерии (для аргументации я хочу использовать AccountId). Это даст мне подсчет сгруппированных дат только с использованием отдельного аккаунта AccountId. Являются ли даже возможными в рамках агрегации?
ссылается на последнюю строку здесь, которая отображает от SQL различную эквивалентную операцию mongo: http://docs.mongodb.org/manual/reference/sql-aggregation-comparison/ – Jayz
Это определенно не работает, так как первая группа будет избавиться от поля notificationDate. – zsong
yup, извините за это. поэтому добавьте уведомление в первую группу. см. отредактированный ответ. – Jayz