sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB Hur får vi alla AKTUELLA öppna markörer och de frågor de kör?

MongoDB har kommandot 'currentOp' som innehåller aktuella operationer (i allmänhet inte bara öppna markörer). Resultatet är en uppsättning "inprog"-värden. Du har operationens tråd-id, inte ett markör-id, men det är väldigt användbart för att undersöka tunga operationer eller de som har pågått länge. Det är inte perfekt som du vill ha men jag tror att du kan skriva ett litet program som tolka tiden för operationer för att identifiera vilken som har körts under en viss tidsperiod.

Titta på ett exempel på min databas av en aggregering som jag kör bara i testsyfte, jag kommer att dölja en del data eftersom det är väldigt vettigt i vårt fall :)

"inprog" : [
    {
        "opid" : 74074645,
        "active" : true,
        "secs_running" : 2,
        "op" : "query",
        "ns" : "mydb.Terms.ByHour",
        "query" : {
            "aggregate" : "Terms.ByHour",
            "pipeline" : [
                {
                    "$match" : {
                        "cluster" : "my_key",
                        "start" : {
                            "$gte" : ISODate("2013-11-10T00:00:00Z"),
                            "$lte" : ISODate("2013-11-11T00:00:00Z")
                        }
                    }
                },
                {
                    "$group" : {
                        "_id" : "$start",
                        "count" : {
                            "$sum" : "$count"
                        }
                    }
                },
                {
                    "$sort" : {
                        "_id" : 1
                    }
                }
            ]

Lägg bara in resultatet i en variabel:

currentOps = db.currentOp()

och använd den som en vanlig json, eller skriv ett litet program som itererar currentOps.inprog-arrayen och letar efter secs_running> något

Jag hoppas att det hjälper.



  1. hur man grupperar i mongoDB och returnerar alla fält i resultat

  2. hur läser man alla bytes som kommer på en tcp-anslutning?

  3. parametern include_type_name är satt till true i node.js

  4. Analysera en lång frågesträng direkt till MongoDB (precis som du kan i SQL)