Здравствуйте. Впервые разбираюсь с MongoDB, возник вопрос при группировке данных.
Даны данные за два дня:
db.test.insert({
"_id" : ObjectId("13edebb315d8952400407343"),
"create_at" : ISODate("2012-12-19T12:00:00.000Z"),
"item" : {
"tags" : [
"aaaa"
],
"event" : "accepted",
}
});
db.test.insert({
"_id" : ObjectId("13edebb39e60c73800b35727"),
"create_at" : ISODate("2012-12-19T12:05:00.000Z"),
"item" : {
"tags" : [
"aaaa"
],
"event" : "delivered"
}
});
db.test.insert({
"_id" : ObjectId("13edebb315d8952400407344"),
"create_at" : ISODate("2012-12-19T13:40:00.000Z"),
"item" : {
"tags" : [
"bbbb"
],
"event" : "accepted",
}
});
db.test.insert({
"_id" : ObjectId("13edebb39e60c73800b35728"),
"create_at" : ISODate("2012-12-19T13:45:00.000Z"),
"item" : {
"tags" : [
"bbbb"
],
"event" : "delivered"
}
});
db.test.insert({
"_id" : ObjectId("13edebb315d8952400407345"),
"create_at" : ISODate("2012-12-20T16:30:00.000Z"),
"item" : {
"tags" : [],
"event" : "accepted",
}
});
db.test.insert({
"_id" : ObjectId("13edebb39e60c73800b35729"),
"create_at" : ISODate("2012-12-20T16:35:00.000Z"),
"item" : {
"tags" : [],
"event" : "delivered"
}
});
На выходе необходимо получить результат:
{
"total_count": 6
"items": [
{
"total_count": 2,
"created_at": "Wed, 19 Dec 2012 00:00:00 GMT",
"tags": {
"aaaa": 1,
"supporta": 1
},
"event": "sent"
},
{
"total_count": 2,
"created_at": "Wed, 19 Dec 2012 00:00:00 GMT",
"tags": {
"aaaa": 1,
"supporta": 1
},
"event": "delivered"
},
{
"total_count": 1,
"created_at": "Wed, 20 Dec 2012 00:00:00 GMT",
"tags": {},
"event": "sent"
},
{
"total_count": 1,
"created_at": "Wed, 20 Dec 2012 00:00:00 GMT",
"tags": {},
"event": "delivered"
}
}
Пока удалось сформировать часть необходимых данных, запросом:
db.test.aggregate([
{$group:
{
_id:{event:'$item.event', doy:{$dayOfYear:'$create_at'} },
total_count:{$sum:1},
created_at:{$first: '$create_at'},
tags: {$addToSet: '$item.tags'}
},
},
{$project:{total_count:1, _id:0, event:'$_id.event', created_at:1, tags:1}}
])
Но как, получить необходимую информацию о тегах, то есть массив тегов и их количество?
А так же в дате указать начало дня 00:00:00?