Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

//Aggregation query for events to summarise the nodes by current state.

Code Block
languagejs
db.getCollection('nodes').aggregate([
	//get all nodes from the group HQDEV
    {
      $match: {group: "HQDev"}  
    },
//Get all the states for the matched nodes
    {
        $lookup: {
            from: "state",
            localField: "_id",
            foreignField: "node",
            as: "states"
        }
    },
//unwinds the states array creating a document per state with node config data
    {
        $unwind: {
            path: "$states"
        }
    },
//We only want open states
    {
        $match: {'states.state': {$eq: 'open'}}
    },
// group by the node, the state and the stateful element
    {
        $group : {
     _id : {node: "$_id", state: "$states.state", stateful: "$states.stateful" },
     total: {$sum: 1}
        }
    },
//Then group by node and collecting all the states for the node
    {
        $group : {
     _id : "$_id.node",
     states: { $push: { state: "$_id.state", stateful: "$_id.stateful", count: "$total"}}
        }
    },
   
    ])


Image Added

Aggregation query for events to summarise the events by the priority.

...