MongoDB има команда 'currentOp', която съдържа текущи операции (като цяло, не само отворени курсори). Резултатът е масив от стойности "inprog". Имате идентификатора на нишката на операцията, а не идентификатора на курсора, но е много полезно да изследвате тежки операции или такива, които се изпълняват от дълго време. Не е точно това, което искате, но мисля, че можете да напишете малка програма, която анализира времето на изпълнение на операции, за да идентифицира коя от тях се изпълнява за определен период от време.
Вижте пример за моята база данни на агрегат, който изпълнявам само за целите на тестването, ще скрия някои данни, защото е много разумно в нашия случай :)
"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
}
}
]
Просто поставете резултата в променлива:
currentOps = db.currentOp()
и го използвайте като обикновен json или напишете малка програма, която итерира масива currentOps.inprog и проверява за secs_running> нещо
Надявам се да помогне.