Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB我们如何获取所有当前打开的游标及其运行的查询?_Mongodb - Fatal编程技术网

MongoDB我们如何获取所有当前打开的游标及其运行的查询?

MongoDB我们如何获取所有当前打开的游标及其运行的查询?,mongodb,Mongodb,一些用户在设置noTimeout的情况下打开mongo的游标。我想列出所有打开的游标、它们的ID、它们的选项、它们运行的查询、该游标的开始时间、上次使用它的时间(getmore)。有没有这样的命令?有人能告诉我一些提示吗?这样我就可以在需要的时候编写一个小应用了。MongoDB有一个命令“currentOp”,其中包含当前操作(一般来说,不只是打开游标)。结果是一个“inprog”值数组。您有操作的线程id,而不是游标id,但它对于调查繁重的操作或运行了很长时间的操作非常有用。 这并不完全是您想

一些用户在设置noTimeout的情况下打开mongo的游标。我想列出所有打开的游标、它们的ID、它们的选项、它们运行的查询、该游标的开始时间、上次使用它的时间(getmore)。有没有这样的命令?有人能告诉我一些提示吗?这样我就可以在需要的时候编写一个小应用了。

MongoDB有一个命令“currentOp”,其中包含当前操作(一般来说,不只是打开游标)。结果是一个“inprog”值数组。您有操作的线程id,而不是游标id,但它对于调查繁重的操作或运行了很长时间的操作非常有用。 这并不完全是您想要的,但我认为您可以编写一个小程序来解析操作的运行时间,以确定哪个操作已经运行了一段时间

请看一个仅为测试目的而运行的聚合数据库示例,我将隐藏一些数据,因为在我们的示例中它非常合理:)

只需将结果放入变量中:

currentOps = db.currentOp()
并将其用作常规json,或者编写一个小程序,迭代currentOps.inprog数组并检查secs_running>something


我希望这会有所帮助。

根据2017年1月对JIRA的评论,计划推出一项功能来实现这一点,但目前还没有任何路线图:

通过db.currentOp()上的文档阅读是值得的。您还可以使用“true”作为参数运行,这将提供更详细的输出和空闲操作:同意。一般来说,在分析方面,无参数运行对我很有效,但它提供了更多信息,以防需要进行更深入的分析。
db.currentOp
即使使用
true
,也不会返回我系统上的任何空闲游标。3.4蒙哥虽然如此:耸耸肩:。你能把我的回答标记为接受吗?我想它解决了你一直在寻找的问题。提前谢谢!
currentOps = db.currentOp()