@Astral100498

Как переделать запрос к базе данных (mongodb)?

Всем привет. У меня есть коллекция в которой хранятся следующие записи.

{
    "_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
}

То есть чтобы была одна запись с массивом всех дубликатов и их количеством и размером
  • Вопрос задан
  • 43 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Яндекс Москва
от 100 000 до 300 000 ₽
Яндекс Санкт-Петербург
от 100 000 до 300 000 ₽
от 120 000 до 160 000 ₽