我的公司正在使用配置数据库进行查询 我为查询的自定义日期制作了数据 但是我们希望将此查询置于“脉冲”中,以便每天获取有关该查询的邮件。 该查询中的日期是否可以每天更改,以获取最近“ 30天”,“ 7天”和最后一天数据的结果。
简而言之,我正在寻找一个函数,以便它可以跟踪“我的当前日期”,以便我可以执行“我的当前日期” -30以获取过去30天的数据
[{"$lookup":{
"from":"institutions",
"localField":"institute_id",
"foreignField":"_id",
"as":"insti"
}},
{"$group":{
"_id":"$institute_id",
"name":{"$first":"$insti.name"},
"applicants1":{"$addToSet":{"$cond":[{"$gte":["$created_at",ISODate("2019-06-30T00:00:00.000Z")]},"$candidate_id",null]}},
"applicants2":{"$addToSet":{"$cond":[{"$gte":["$created_at",ISODate("2019-07-23T00:00:00.000Z")]},"$candidate_id",null]}},
"applicants3":{"$addToSet":{"$cond":[{"$gte":["$created_at",ISODate("2019-07-29T00:00:00.000Z")]},"$candidate_id",null]}}
}},
{"$project":{
"_id":0,
"name":"$name",
"last_30_days":{"$subtract":[{"$size":"$applicants1"},1]},
"last_7_days":{"$subtract":[{"$size":"$applicants2"},1]},
"last_1_day":{"$subtract":[{"$size":"$applicants3"},1]}
}},{"$sort":{"last_30_days":-1}}
]
在过去30天的查询中,我尝试使用"$currentDate()-30"
,但它不起作用
答案 0 :(得分:0)
我当前在Mysql查询中使用它
最近30天
where date(created_at) >= DATE_SUB(CURDATE(), INTERVAL 30 DAY)
过去7天
where date(created_at) >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)
当前日期
where date(created_at) >= CURDATE()
答案 1 :(得分:0)
可以使用{$ add:['$ applicants1','3000']}代替使用“ $ currentDate()-30” 这里3000是毫秒。您还可以使用乘法运算符,而不是以毫秒为单位传递值。如$ multiply:['desireddays','216000'] 整个查询将变为{$ add:['$ applicants1',{$ multiply:['-desireddays','216000']}]}
在过去的几天中,您输入的值为负负,例如:-30
参考https://www.hypertrends.com/2017/03/dateadd-functionality-mongodb/