MongoDB ma polecenie 'currentOp', które zawiera bieżące operacje (w ogólności nie tylko otwarte kursory). Wynikiem jest tablica wartości „inprog”. Masz identyfikator wątku operacji, a nie identyfikator kursora, ale bardzo przydatne jest badanie ciężkich operacji lub tych, które działają od dłuższego czasu. Nie jest to idealnie to, czego chcesz, ale myślę, że możesz napisać mały program, który analizuj czas trwania operacji, aby zidentyfikować, które z nich były uruchomione przez określony czas.
Spójrz na przykład mojej bazy danych agregacji, którą uruchamiam tylko w celach testowych, ukryję niektóre dane, ponieważ w naszym przypadku jest to bardzo rozsądne :)
"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
}
}
]
Po prostu umieść wynik w zmiennej:
currentOps = db.currentOp()
i używaj go jako zwykłego json lub napisz mały program, który iteruje tablicę currentOps.inprog i sprawdza, czy secs_running> coś
Mam nadzieję, że to pomoże.