MongoDB có một lệnh 'currentOp' chứa các hoạt động hiện tại (nói chung, không chỉ các con trỏ đang mở). Kết quả là một mảng các giá trị "inprog". Bạn có id luồng của thao tác, không phải id con trỏ nhưng nó rất hữu ích để điều tra các thao tác nặng hoặc những thao tác đã chạy trong một thời gian dài. phân tích thời gian chạy các hoạt động để xác định cái nào đã chạy trong một khoảng thời gian nhất định.
Hãy xem ví dụ về cơ sở dữ liệu của tôi về một tập hợp mà tôi chạy chỉ cho mục đích thử nghiệm, tôi sẽ ẩn một số dữ liệu vì nó rất hợp lý trong trường hợp của chúng tôi :)
"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
}
}
]
Chỉ cần đặt kết quả vào một biến:
currentOps = db.currentOp()
và sử dụng nó như một json thông thường hoặc viết một chương trình nhỏ lặp lại mảng currentOps.inprog và kiểm tra secs_running> something
Tôi hy vọng nó sẽ hữu ích.