7

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

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

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

4

2 回答 2

26

如果您抨击您寻求建议的项目,我不知道是什么导致您假设提高获得建议的机会。除此之外,在使用软件库时,您可能想假设实现细节已经经过深思熟虑,并且它们的方式是有原因的。

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

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

PS:我花了一些时间来完善你设计糟糕的提问方式。;)

于 2012-08-19T11:07:18.543 回答
1

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

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

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

于 2021-01-05T16:15:13.283 回答