MongoDB的java驱动的坑---启用副本集后id的update无效
- UID
- 1066743
|
MongoDB的java驱动的坑---启用副本集后id的update无效
情况
我们有文档如下:
{
“_id”: ObjectId(‘59f189e9861afe7aa6d684b0’),
“mobile”: “12345678”,
“reason”: 18,
“createOper”: “zhangzequan”,
“createDate”: ISODate(‘2017-10-26T07:08:25.669Z’)
}
在代码中需要对该文档进行更新,使用代码如下:
private void dealt(String resampleId, String operator, String remark) {
Update update = new Update();
update.set(“dealtOper”, operator);
update.set(“dealtDate”, FormatDate.now());
if (!StringUtils.isEmpty(remark)) {
update.set(“remark”, remark);
}
mongoOperations.updateFirst(Query.query(Criteria.where(“id”).is(resampleId)),
update,
Resample.class);
}
之前一直没问题,可以正常更新文档。
突然有一天 更新失效,而且也不报错。
原因
经过对比排查后 发现 启用副本集之后 id的update就失效了。find使用id查询正常。
解决方式
将id修改成_id,跟数据库字段的对应起来。
使用代码如下:
private void dealt(String resampleId, String operator, String remark) {
Update update = new Update();
update.set(“dealtOper”, operator);
update.set(“dealtDate”, FormatDate.now());
if (!StringUtils.isEmpty(remark)) {
update.set(“remark”, remark);
}
mongoOperations.updateFirst(Query.query(Criteria.where(“_id”).is(resampleId)),
update,
Resample.class);
} |
|
|
|
|
|