【问题标题】:Access currentOp through Java Mongo 3.4 driver or Spring Data Mongo通过 Java Mongo 3.4 驱动程序或 Spring Data Mongo 访问 currentOp
【发布时间】:2017-11-01 17:58:43
【问题描述】:

我正在尝试通过 Java Mongo 驱动程序或 spring 运行以下命令

db.currentOp(
 {
  "active" : true,
  "secs_running" : { "$gt" : 3 }
 }
);

db.currentOp(true);

我正在使用

  • Java 8
  • Mongo Java 驱动程序 3.4.3
  • Spring Data Mongo 1.10.6
  • Mongo 3.4.9

有人知道这样做的好方法吗?提前致谢!

【问题讨论】:

    标签: java mongodb spring-data-mongodb


    【解决方案1】:

    您可以在 admin 数据库上使用 runCommand 方法:

    MongoDatabase database = client.getDatabase("admin");    
    Document document1 = database.runCommand(new Document("currentOp", 1)
            .append("active", true));
    Document document2 = database.runCommand(new Document("currentOp", 1)
            .append("active", false));
    Document document3 = database.runCommand(new Document("currentOp", 1)
            .append("active", true)
            .append("secs_running", new Document("$gt", 3)));
    

    【讨论】:

    • 感谢您的快速回复。我尝试了您提出的建议,但 currentOp 上的标志似乎没有受到尊重。例如,当我说尝试说 active 为 false 并且运行超过 3 秒时,它仍然返回当前运行的 currentOp。查询的详细信息是 --- "active": true, "opid": 15144, "secs_running": 0, "microsecs_running": 27, "op" : "command", "ns": "admin.$cmd", "query": { "currentOp": { "active": false, " secs_running": { "$gt": 3 }
    • 我明白了,命令 db.runCommand({currentOp: {active: false}}) 甚至在 mongo shell 中也不起作用。将调查此问题
    • 我想通了,我们需要使用以下命令:db.runCommand({"currentOp": 1, "active": true, "secs_running" : { "$gt" : 3 }})。请尝试更新的答案,它对我有用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-15
    相关资源
    最近更新 更多