实际上,我想从执行时间字段中减去分钟(减去5分钟)... 这是我的mongodb集合:
{
"_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的正确方法吗?
答案 0 :(得分:0)
正如错误明确指出的那样,$sql = @"
DECLARE @Tables CURSOR;
DECLARE @TableName NVARCHAR(200);
BEGIN
SET @Tables = CURSOR FOR
SELECT TABLE_NAME
FROM test.INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE='BASE TABLE'
AND TABLE_NAME LIKE 'x%'
OPEN @Tables
FETCH NEXT FROM @Tables
INTO @TableName
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT 'SELECT TOP 1 * FROM test.dbo.' + @TableName
FETCH NEXT FROM @Tables
INTO @TableName
END;
CLOSE @Tables ;
DEALLOCATE @Tables;
END;
"@
$ps = [PowerShell]::Create()
$ps.AddCommand("Invoke-Sqlcmd").AddParameter("Query", $sql).AddParameter("Verbose")
$ps.Invoke()
$sqlOutput = $ps.Streams.Verbose
$sqlOutputToRun = $nul
$sqlOutput | foreach {
$sqlOutputToRun += ($_.ToString() + "`n")
}
$sqlOutputToRun = @"
$sqlOutputToRun
"@
$sqlOutputToRun
不是聚合管道阶段。使用$subtract
来转换查询结果:
$project