【问题标题】:MongoDB (Java) : How to cancel map-reduce (or aggregate)MongoDB(Java):如何取消 map-reduce(或聚合)
【发布时间】:2014-05-06 01:04:08
【问题描述】:

我对 MongoDB 世界很陌生,我正在使用 Java 驱动程序 (2.12) 连接到 MongoDB 服务器 (2.6)。

是否有取消 MapReduceCommand(或正在进行的 .aggregate() 操作)?我在文档中找不到任何内容。

【问题讨论】:

    标签: mongodb mongodb-java


    【解决方案1】:

    我也不确定是否有直接的 API 方法,但与大多数 mongo 操作一样,这些方法实际上只是通过对“系统集合”进行类似的有线协议操作来发挥作用。

    所以查找和取消的方法记录在db.currentOp()db.killOp() 下。这些都是shell实现方法,它们都在做id访问下面的“系统集合”,分别是$cmd.sys.inprog$cmd.sys.killop

    具体来说,它们的 shell 实现是:

    当前操作

    function ( arg ){
        var q = {}
        if ( arg ) {
            if ( typeof( arg ) == "object" )
            Object.extend( q , arg );
            else if ( arg )
            q["$all"] = true;
        }
        return this.$cmd.sys.inprog.findOne( q );
    }
    

    killOp

    function (op) {
        if( !op )
            throw "no opNum to kill specified";
        return this.$cmd.sys.killop.findOne({'op':op});
    }
    

    这会简单地转换成 Java 代码,因此,例如,在确定您希望停止的操作的当前操作编号后,您只需发出如下查询(请原谅我从现有 Sprint 数据代码中快速剪切和粘贴,所以无论获取集合对象的实际方法是什么):

    DBCollection collection = mongoOperation.getCollection("$cmd.sys.killop");
    
    BasicDBObject query = new BasicDBObject("op", opNumber);
    DBObject result = collection.findOne(query);
    

    这就是它的基础。有关如何匹配要取消的操作的更多信息,请参阅列出的文档资源。

    【讨论】:

      【解决方案2】:

      除了先前的答案(这是正确的)之外,还有一种方法可以禁止您的 mapreduce(或实际上任何其他命令)运行超过特定时间。

      我发现这非常方便,因为它可以让您积极主动。请注意,这仅在 2.6 之后可用。例如,在这里我要在 0.2 秒后终止我的查找查询。

      db.collection.find({
        // my query
      }).maxTimeMS(200)
      

      查看maxTimeMS 了解更多信息。

      【讨论】:

      • 当然,但这不仅是 MongoDB 2.6 的新实现,而且还是一个游标修饰符,尽管这可以应用于 aggregate,它会在此版本中返回一个游标,但它不会适用于 mapReduce。或者严格来说,这是否回答了这个问题。这是一个有价值的评论,但不是真正的答案。
      • @NeilLunn 我认为在问题中它被写成 map-reduce 或聚合。它也是为 2.6 版编写的,所以我认为它可以作为答案。更不用说有很多关于 killOp 的答案,而几乎没有关于这个新功能的答案。
      猜你喜欢
      • 1970-01-01
      • 2011-07-14
      • 2012-12-04
      • 1970-01-01
      • 1970-01-01
      • 2012-05-15
      • 1970-01-01
      • 1970-01-01
      • 2015-08-04
      相关资源
      最近更新 更多