Java Spring数据MongoDB“_“类”;糟糕的设计模式

Java Spring数据MongoDB“_“类”;糟糕的设计模式,java,mongodb,spring-data,Java,Mongodb,Spring Data,我对SpringDataMongoDB项目有问题。我的问题是所有收集记录中的\u class属性。我的用户集合大小接近130万条记录。所有记录都有一个\u类属性。这是一个问题,也是一个糟糕的项目设计。因为MongoDB是一个基于文档的系统。集合中的每个记录的大小都是一个问题。用户集合: { "_class" : "com.myproject.xxx.yy.aaa.bb.User", … } 如果我想将用户类移动到另一个包中怎么办?为什么Spring Data会在所有记录中添加一个\u clas

我对SpringDataMongoDB项目有问题。我的问题是所有收集记录中的
\u class
属性。我的用户集合大小接近130万条记录。所有记录都有一个
\u类
属性。这是一个问题,也是一个糟糕的项目设计。因为MongoDB是一个基于文档的系统。集合中的每个记录的大小都是一个问题。用户集合:

{ "_class" : "com.myproject.xxx.yy.aaa.bb.User", … }

如果我想将用户类移动到另一个包中怎么办?为什么Spring Data会在所有记录中添加一个
\u class
属性?

我不知道是什么让你产生这样的假设,即如果你正在抨击你寻求建议的项目,那么你会获得更多的建议。除此之外,在使用软件库时,您可能希望假定实现细节已经考虑过了,并且是有原因的

如果你花了时间考虑阅读参考文档,你会发现解释为什么<>代码>类< /COD>属性通常存在,以及如何调整所写的值,如何定制密钥,甚至关闭所有写入的类型信息。 在阅读了这些东西之后,你现在可以反过来再次编写完美的软件了。谢谢


附言:我花了一点时间来改进你设计拙劣的提问方式

对于最近访问该类的用户,请查看@TypeAlias注释,该注释允许您声明将放入_类中的值,因此可以使用较小的值

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


这里没有人问过这件事,但仅供参考,为了完成这件事,您可以在同一个集合中混合类型。如果您想限制基于类型的文档搜索,那么即使MongoTemplate在“find”方法中请求类型,它也不会在Spring Mongo中自动执行;您自己已经将_类添加到查询中。

为了避免在将类移动到另一个包时出现不一致,您可以使用Section link。您认为它不够灵活:是否可以(经过足够的努力)为每个集合使用不同的type属性。。。就像条令(PHP)中基于注释的方法一样,Jackson?答案并不是说它对每种情况都是灵活的(这有什么意义)。如果您认为您需要更大的灵活性,请在我们的[JIRA](https:/JIRA.spring.io/browse/DATAMONGO)中随意打开一张票据。