У меня есть одна коллекция в 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 минут.Как добиться этого требования?