[英]Manipulating MongoDB response NodeJS
我對mongodb進行了“小”查詢,以加入兩個集合並檢索數據。
游戲:在URL上插入2或3個參數
-include可以是0,1或2。
0獨占1包含2全部返回
-netcode:是用於過濾數據的鍵-group:另一個可選鍵,與第一個參數“ include”一起使用
-我的查詢工作正常,以某種方式返回某個組中事件發生的次數。
-問題? 我無法使用mongo db的結果,我需要將其解析為JSON。 我對JS不太聰明,所以我不知道放在哪里。 由於我在公司工作,因此某些代碼已經完成。
我的輸出是這樣的:
{
"events": [
{
"_id": {
"group": "GFS-CAJEROS-INFINITUM-TELDAT-M1",
"event": "SNMP DOWN"
},
"incidencias": 1
},
{
"_id": {
"group": "GFS-CAJEROS-MPLS",
"event": "Proactive Interface Input Utilisation"
},
"incidencias": 1209
},
{
"_id": {
"group": "GFS-CAJEROS-MPLS",
"event": "Proactive Interface Output Utilisation"
},
"incidencias": 1209
},
{
"_id": {
"group": "GFS-CAJEROS-MPLS",
"event": "Proactive Interface Availability"
},
"incidencias": 2199
},
{
"_id": {
"group": "GFS-SUCURSALES-HIBRIDAS",
"event": "Proactive Interface Output Utilisation"
},
"incidencias": 10
},
但是我希望它以JSON格式融合,像這樣:檢查事件名稱是int值。
[
{
"group": "GFS-CAJEROS-MPLS",
"Proactive Interface Input Utilisation" : "1209",
"Proactive Interface Output Utilisation" : "1209",
"Proactive Interface Availability" : "2199",
},
{
"group": "GFS-SUCURSALES-HIBRIDAS",
"Proactive Interface Output Utilisation" : "10",
},
我正在使用Node.js和mongodb模塊,因為我不知道此功能的確切工作原理,我不知道如何管理響應,有更好的方法嗎? 想獲取json文件,使用另一個js生成它?
這是我正在使用的代碼,基本上是重要的部分:
var events = db.collection('events');
events.aggregate([
{ $match : { netcode : data.params.netcode } },
{
$lookup:
{
from: "nodes",
localField: "name",
foreignField: "name",
as: "event_joined"
}
},
{ $unwind: {path: "$event_joined"} },
{ $match : {"event_joined.group" :
{$in:
[
groups[0] ,
groups[1] ,
groups[2] ,
groups[3] ,
groups[4] ,
groups[5] ,
groups[6] ,
groups[7] ,
groups[8] ,
groups[9] ,
]
}
}
},
{ $group : { _id : {group:"$event_joined.group", event:"$event"}, incidencias: { $sum: 1} } },
])
.toArray( function(err, result) {
if (err) {
console.log(err);
} else if (result) {
data.response.events = result;
} else {
console.log("No result");
}
您應該在管道中添加另一個$ group {_id: "$_id.group", events: {$push : {name: "$_id.event", incidencias: "$incidencias"}}}
然后使用“ Array.map”在JS代碼上更改數據的結構。
data.response.events = data.response.events.map(function (eve){
var obj = {
"group": eve.group
};
eve.events.forEach(function (e){
obj[e.name] = e.incidencias
})
return obj;
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.