Spring Data MongoDB中"_class"的不良设计模式

8

我在使用Spring Data MongoDB项目时遇到了问题。我的问题是所有集合记录中的_class属性。我的用户集合大小接近130万条记录,所有记录都有一个_class属性。这是一个问题,也是项目设计上的不足之处。因为MongoDB是一种基于文档的系统,每个集合中的每个记录的大小都是一个问题。用户集合:

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

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


http://forum.springsource.org/showthread.php?112505-Spring-data-MongoDb-MappingMongoConverter-remove-_class - practical programmer
2
为避免将类移动到另一个包时出现不一致的情况,您可以使用@TypeAlias - O.Badr
这个回答解决了你的问题吗?Spring data MongoDb: MappingMongoConverter remove _class - Étienne Miret
1个回答

3

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

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

这里没有人问过,但只是为了完整起见,您可以在同一集合中混合使用类型。如果您想基于类型限制文档搜索,即使MongoTemplate在“find”方法中要求类型,Spring Mongo也不会自动发生;您必须自己添加_class到查询中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接