Search code examples
mongodbelapache-nifi

How to get ISO string in Nifi getMongo Query Field


I'm trying to use expression languge to generate ISO string in Nifi getMongo Query field using following query,

{
"remindmeDate": {
"$gte": "${now():format("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",'GMT')}",
"$lte": "${now():toNumber():plus(359999):format("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",'GMT')}"
}
}

But i'm getting invalid JSON error error as double quotes are not escaped. When we try to escape it using \ operator, nifi is not evaluating the expression language. Is there any method or workaround to get this working ?

Thanks in advance


Solution

  • Nifi's getMongo Query field doesnt support EL. So i created a stored function in MongoDB for my dynamic query and called it from Nifi.

    {
        "_id" : "reminderDateGMT",
        "value" : function (reminderDateGMT) {
                var reminder = new Date(reminderDateGMT)
                var fromDate = new Date();
                var toDate = new Date(new Date().getTime()+(1000 * 60 * 60));
                if ((reminder >= fromDate) && (reminder <=toDate )) {
                    return true;
                } else {
                    return false;
                }
    
            }
    }
    

    In nifi GetMongo Query,

    {
      "$where": "reminderDateGMT(this.reminderDateGMT)"
    }