【发布时间】:2017-01-27 19:20:12
【问题描述】:
我正在尝试使用updateOne 方法更新文档:
UpdateResult r = coll.updateOne(
eq("_id", id),
this.getMapper().mapToMongoDocumentEntry(entity)
);
尽管如此,我收到一个异常告诉我:
无效的 BSON 字段名称 _id
mapToMongoDocumentEntity 返回 Document 类似:
Document{
_id=588b0d7108980f004323ca73,
username=user,
password=.---,
cname=----,
sname=,
mail=mail,
creation=Fri Jan 27 09:05:52 UTC 2017,
validation=null
}
mapToMongoDocumentEntry代码:
public Document mapToMongoDocumentEntry(User entity) {
Document result = new Document();
if (entity.getId() != null)
result.put(UserEntityMongoDocumentMapper.FIELD_ID, new ObjectId(entity.getId()));
result.put(UserEntityMongoDocumentMapper.FIELD_USER, entity.getUser());
result.put(UserEntityMongoDocumentMapper.FIELD_PASSWORD, entity.getPasswd());
result.put(UserEntityMongoDocumentMapper.FIELD_COMMONNAME, entity.getCname());
result.put(UserEntityMongoDocumentMapper.FIELD_SURNAME, entity.getSname());
result.put(UserEntityMongoDocumentMapper.FIELD_MAIL, entity.getMail());
result.put(UserEntityMongoDocumentMapper.FIELD_CREATION, entity.getCreation());
result.put(UserEntityMongoDocumentMapper.FIELD_VALIDATION, entity.getValidation());
return result;
}
有什么想法吗?
【问题讨论】:
-
能否贴出实体代码?
-
我还添加了
mapToMongoDocumentEntity代码。 -
如果您的
mapToMongoDocumentEntry返回整个Document,replaceOne(Bson filter, TDocument replacement)对您有帮助吗? -
它现在已经工作了。
updateOne和replaceOne有什么区别?