Spring Data MongoDB"_class"设计模式不好

uja*_*ava 2 java mongodb spring-data

我有Spring Data MongoDB项目的问题.我的问题是_class所有收集记录中的属性.我的用户集合大小接近130万条记录.所有记录都有一个_class属性.这是项目的问题和糟糕的设计.因为MongoDB是一个基于文档的系统.大小是集合中每条记录的问题.用户收藏:

{ "_class" : "com.myproject.xxx.yy.aaa.bb.User", … }
Run Code Online (Sandbox Code Playgroud)

如果我想将User类移动到另一个包,该怎么办?为什么Spring Data会_class为所有记录添加属性?

Oli*_*ohm 18

如果你正在抨击你寻求建议的项目,我不知道是什么导致你提出建议获得建议的机会.除此之外,在使用软件库时,您可能希望假设已经考虑了实现细节,并且它们是出于某种原因的方式.

如果你花时间考虑阅读参考文档,你会发现一解释为什么_class属性一般存在,以及如何调整写入的值,如何自定义键甚至关闭写入的类型信息一点都不

在阅读完这些内容后,您现在可以依次再次编写完美的软件.谢谢!

PS:我花了一点时间来改进你设计糟糕的提问方式.;)


Joe*_*man 3

对于最近访问此内容的人,请查看 @TypeAlias 注释,它允许您声明将放入 _class 中的值,因此可以使用较小的值。

这也应该部分回答@Eric2201上面的问题,他询问了不同的类型属性。我不确定拥有不同且不一致的属性是否是一个好主意,我对 _class 很满意。当然,您可以将任何您想要的字段添加到文档中。

这里没有人问过它,但仅供参考,为了完成此操作,您可以在同一集合中混合类型。如果您想根据类型限制文档搜索,即使 MongoTemplate 在“查找”方法中要求类型,Spring Mongo 中也不会自动进行;您自己将 _class 添加到查询中。