Всем привет. У меня есть коллекция в которой хранятся следующие записи.
{
"_id": {
"$oid": "12d61624226cf313381508a1"
},
"size": 222,
"ipTo": "772.22.122.0",
"ipFrom": "372.22.122.0",
"protocol": "UDP",
"__v": 0
}
{
"_id": {
"$oid": "12d61624226cf313381508a1"
},
"size": 111,
"ipTo": "772.22.122.0",
"ipFrom": "372.22.122.0",
"protocol": "UDP",
"__v": 0
}
{
"_id": {
"$oid": "12d61624226cf313381508a1"
},
"size":42,
"ipTo": "112.42.142.0",
"ipFrom": "372.22.122.0",
"protocol": "tcp",
"__v": 0
}
Я сделал такой запрос который подсчитывает количество дубликатов, а также сумму размеров пакетов и записывает это в новую коллекцию
mongoNetworkCollection.aggregate([
// {$limit:countDocuments},
// { $group: {
// _id: {IpTO:"$IpTo", IpFROM:"$IpFrom", protocol:"$Protocol"},
// dups: { "$addToSet": "$_id" },
// count: { "$sum": 1 },
// total:{"$sum":"$Size"}
// }},
// { $project: { array: "$_id", _id: { $arrayElemAt: [ "$dups", 0 ] },count:"$count",size:"$total",date:{$substr:[(moment(new Date()).format('YYYY-MM-DD HH:mm:ss')),0,-1]}} },
// ],(err,results) =>{})
Результат агрегации следующий
{
"_id": {
"$oid": "12d61624226cf313381508a1"
},
"size": 333,
"count": 2,
"date": 1692142422,
"array":[{
"ipTo": "772.22.122.0",
"ipFrom": "372.22.122.0",
"protocol": "UDP",
}],
"__v": 0
}
{
"_id": {
"$oid": "12d61624226cf313381508a1"
},
"size": 42,
"count": 1,
"date": 1692142422,
"array":[{
"ipTo": "112.42.142.0",
"ipFrom": "372.22.122.0",
"protocol": "tcp",
}],
"__v": 0
}
Помогите изменить запрос так, чтобы в новую коллекцию записывалось вот так
{
"_id": {
"$oid": "12d61624226cf313381508a1"
},
"date": 1692142422,
"array":[{
"ipTo": "112.42.142.0",
"ipFrom": "372.22.122.0",
"protocol": "tcp",
"size": 42,
"count": 1,
},
{
"ipTo": "772.22.122.0",
"ipFrom": "372.22.122.0",
"protocol": "UDP",
"size": 333,
"count": 2,
}
.......... и так далее
],
"__v": 0
}
То есть чтобы была одна запись с массивом всех дубликатов и их количеством и размером