如何从 Perl 和 mongoDB 中的 ISODate() 中减去分钟数?

How to subtract minutes from ISODate() in perl and mongoDB?

实际上,我想从我的执行时间字段中减去分钟数(减去 5 分钟)... 这是我的 mongodb collection :

{
    "_id" : ObjectId("5c4f11fae2fb4adc98f323ad"),
    "datetime" : ISODate("2019-01-28T14:30:18.423Z"),
    "queuename" : "indotama_advice",
    "payload" : "xxxxxxx",
    "executiontime" : ISODate("2019-01-28T14:31:18.423Z")
}

这是我的代码:

my $collection = $db->get_collection('schedulequeue');
$person =  $collection->find_one({"queuename" => "indotama_advice"},{"executiontime"=>1,"_id"=>0});
my $new_data = $collection->aggregate([
        {'$subtract' => ["executiontime", 5 * 60 * 1000]}
]);

但我收到错误消息 unrecognized pipeline stage name : $subtract,谁能告诉我在 perl 中使用 $subtract 的正确方法??

正如错误明确指出的那样,$subtract 不是聚合管道阶段。使用$project转换查询结果:

    $collection->aggregate(
        [
            {
                '$project' => 
                    {
                        'alteredExecutionTime' => 
                            {
                                '$subtract' => ['$executiontime', 5 * 60 * 1000]
                            }
                    }
            }
        ]
    );