我有一个项目,它结合了Python的MongoEngine和Java的Morphia。
Python部分用于前端,它使用MongoEngine进行文档建模。它存储了大量信息,前端经常变化,所以我不得不频繁地添加或减去新字段。
Java部分执行一些计算任务,它仅依赖于模型中的几个字段。要将MongoEngine中的每个字段映射到Java,Morphia模型可能会很乏味,因为我无法在Java部分中使用它们。
在Morphia模型中,我只想声明我将要使用的变量/字段。 那么,如果我没有为morphia中的mongo文档字段声明相应的变量,会发生什么? 具有更多字段的python部分编写的原始文档是否会被Morphia覆盖?
答案 0 :(得分:2)
您需要小心:一个简单的.save()
将用您的部分数据替换文档 - 您未在Morphia中映射的所有字段都将消失。
您想要使用的是partial update。例如,.set()
操作正在被转换为MongoDB中的$set
- 这只会更改您指定的字段,这就是您想要的。
我不确定这是否真的是一个很好的解决方案。我还要考虑映射整个实体或完全避免Morphia;您只使用了对象文档映射器的一个非常小的子集,并且可能在普通Java客户端上实现相同的操作,而且混淆程度更低(并且维护得更好)。