我正在进行一个集成,其中我将覆盖_id
字段以跟踪会话。我正在使用Spring和Converter
接口执行此操作,而不是由MongoDB生成ID,而是在其中放置由客户端发送的UUID。
客户端使用UUID添加引用原始文档的其他数据。当会话开始时,这就是添加到MongoDB中的文档中的内容:
{
"_id": "a4bbaac0-bae2-4487-9587-609f2263856f",
"mac": "98:90:96:b6:41:bb",
"matches": [ ]
}
会话打开时,可能会添加匹配项。一旦添加,它看起来像这样:
{
"_id": "a4bbaac0-bae2-4487-9587-609f2263856f",
"mac": "98:90:96:b6:41:bb",
"receipt": "17131508",
"matches": ["027a9e1f-c17e-4750-bdd3-291df8cc24fa"]
}
我阅读了最佳做法指南here,旨在实现一对多的关系映射。在指南中,他有一系列引用ObjectId实体的部分。
我的问题很简单,就是按照我的方式做,我不使用ObjectId
破坏了MongoDB的任何查询功能吗?
更多技术细节:
我使用mongoTemplate坚持:
mongoTemplate.insert(e.getIn().getBody(Session.class));
我已经注册了执行以下操作的转换器:
@WritingConverter
public class SessionWriteConverter implements Converter<Session, Document> {
@Override
public Document convert(Session source) {
return sessionToDocument.apply(source);
}
private Function<Session, Document> sessionToDocument = (source) -> {
Document document = new Document();
document.put("_id", source.getId());
document.put("mac", source.getMac());
document.put("receipt", source.getReceipt());
document.put("matches", source.getMatches());
return document;
};
}