sql >> Databáze >  >> NoSQL >> MongoDB

MongoDB Jak získáme všechny AKTUÁLNÍ otevřené kurzory a dotazy, které spouštějí?

MongoDB má příkaz 'currentOp', který obsahuje aktuální operace (obecně nejen otevřené kurzory). Výsledkem je pole hodnot "inprog". Máte id vlákna operace, ne id kurzoru, ale je to velmi užitečné pro zkoumání těžkých operací nebo těch, které běží dlouhou dobu. Není to úplně to, co chcete, ale myslím, že byste mohli napsat malý program, který analyzovat časový průběh operací, abyste zjistili, které z nich byly spuštěny po určitou dobu.

Podívejte se na příklad mé databáze agregace, kterou provozuji jen pro testovací účely, některá data skryji, protože je to v našem případě velmi rozumné :)

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

Jednoduše vložte výsledek do proměnné:

currentOps = db.currentOp()

a použijte jej jako běžný json, nebo napište malý program, který iteruje pole currentOps.inprog a zkontroluje secs_running> něco

Doufám, že to pomůže.



  1. Mongodb Zvýší hodnotu uvnitř vnořeného pole

  2. MongoDB $lookup vs Mongoose populace

  3. Webové uživatelské rozhraní Logstash se nespustí

  4. Jak mohu vymazat všechny instance typu X v klientovi ServiceStack Redis