我有一个集合,我必须编写一个cron作业,该作业将每15分钟定期运行一次,该作业应具有mongo查询,该查询将检查publishOn日期和当前日期和时间,显然是endDate和当前日期,如果两个publishOn都大于等于当前日期,并且endDate大于当前日期,则将status.value更新为“正在进行”,否则,如果publishDate小于且endDate也小于当前日期,则更新状态.value设置为“已存档”,否则将其设置为“预定”状态,
{
"_id" : 30,
"dpId" : 281,
"title" : "PLAY AND WIN",
"startDate" : ISODate("2019-06-25T02:00:00.000Z"),
"endDate" : ISODate("2019-06-30T02:00:00.000Z"),
"publishOn" : ISODate("2019-06-25T02:00:00.000Z"),
"availableAt" : "locations",
"bannerImage" : "img.jpeg",
"showImage" : "img1.jpeg",
"offerDetails" : "ABC",
"termsAndCondition" : "ABCDEF",
"showCaseOfferOnBanner" : true,
"published" : false,
"availableAtLocations" : [
{
"tpId" : 1130,
"tpName" : "pank",
"isActive" : true
},
{
"tpId" : 1131,
"tpName" : "pank some",
"isActive" : false
}
],
"availableAtOutlets" : [],
"status" : {
"_id" : 2,
"value" : "scheduled"
},
"type" : {
"_id" : 2,
"value" : "campaign"
},
}
我已经尝试过类似的事情
db.getCollection('offers')
.update(
{
"publishOn":
{"$gte":new Date()},
"endDate" :
{"$gte": new Date()}
},
{
$set :
{"status.value":"ongoing"}
}
)
我们将不胜感激任何帮助。