在Mongodb查询中基于多种条件更新字段

时间:2019-06-25 17:03:17

标签: mongodb mongoose mongodb-query

我有一个集合,我必须编写一个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"}
        }
      )

我们将不胜感激任何帮助。

0 个答案:

没有答案