Как обновить столбец в MongoDB с помощью Spring Boot, если текущее время созданного времени больше 10 минут? - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть одна коллекция в MongoDB, подобная этой

{
    "_id": "5c0792ce76bf172e7b4f554e",
    "_class": "com.altaf.health.entity.OTP",
    "createdTime": "2018-12-05T08:56:46.199Z",
    "updatedTime": "2018-12-05T08:56:46.199Z",
    "encryptedOTP": "ECH2IsEvQyM=",
    "isExpired": false,
    "mobile": "1234567890"
}

И мой класс модели

@Document(collection="otp")
public class OTP {
    @Id
    private String otpId;
    private Date createdTime;
    private Date updatedTime;
    private String encryptedOTP;
    private boolean isExpired;
    private String mobile;
    ....
}

Теперь я хочу обновить столбец isExpired со значением trueесли current time - createdTime больше 10 минут.

Для этого требования я написал этот код

import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
....

Query query = new Query();
query.addCriteria(Criteria.where("isExpired").is(false));
Update update=new Update();
update.set("isExpired", true);
WriteResult writeResult = mongoTemplate.updateMulti(query, update, OTP.class);
System.out.println("write object = "+writeResult);

Но этот кодобновляет все записи, значение isExpired которых равно false.Здесь я хочу обновить только те столбцы, у которых current time - createdTime больше 10 минут.Как добиться этого требования?

...