Skip to end of banner
Go to start of banner

opEvents Events Aggregate

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Next »

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

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"}}
        }
    },
   
    ])


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

Takes all events after a certain time and which are not acknowledged


Firstly it groups by the event name and priority, and counts the amount of events

db.getCollection('events').aggregate([
  {
    $match: { "time": { "$gte": 1577836800 }, "acknowledged": { "$eq": 0 } }
  },
  {
    $group: {
      _id: { event: "$event", priority: "$priority" },
      priorities: { $push: "$priority" },
      total: { $sum: 1 }
    }
  },
  {
    $group: {
      _id: "$_id.event",
      priorities: { $push: { priority: "$_id.priority", count: "$total" } },
    }
  }
])

  • No labels