从日期pymongo聚合中减去秒数

时间:2016-07-06 07:56:31

标签: python mongodb pymongo aggregation-framework

这是我的python代码:

date1=datetime.datetime(2016,2,3)
cursor = collection.aggregate([
 {"$match":{"EndTime":{"$gte":date1}}},
 {"$project": { "EndTime":"$EndTime","StartTime":{ "$subtract": [ "$EndTime", "$TimeSpent"*1000]},"TimeSpent":"$TimeSpent"}},
 {"$sort":{"StartTime":1}}
])

我的所有StartTime字段均为None。我应该如何将StartTime字段作为我的python输出。

1 个答案:

答案 0 :(得分:0)

您的管道应使用可用的arithmetic operators进行计算;你应该“乘以”一个字符串文字,而不是使用 $multiply 运算符,因此为什么你得到一个null结果,mongo 在"$TimeSpent"*1000中无法识别此部分{ "$subtract": [ "$EndTime", "$TimeSpent"*1000] }

更改管道以使用表达式中的 $multiply 运算符,并且:

date1=datetime.datetime(2016,2,3)
cursor = collection.aggregate([
    { "$match": { "EndTime": { "$gte": date1 } } },
    {
        "$project": { 
            "EndTime": 1,           
            "TimeSpent": 1,
            "StartTime": { 
                "$subtract": [ 
                    "$EndTime", 
                    { "$multiply": ["$TimeSpent", 1000] } 
                ]
            }
        }
    },
    { "$sort": { "StartTime": 1 } }
])