假设我们有以下模型,
基类
class Meeting
{
String title;
}
第一个派生类
class OfficialMeeting extends Meeting
{
int numberOfParticipants;
String meetingRoomName;
}
第二个派生类
class Party extends Meeting
{
String theme;
}
组成
class Schedule
{
List<Meeting> meetings;
}
当我尝试搜索主题为“海滩派对”的集合“时间表”时,Spring数据mongo出错,提示“会议”没有名为主题的字段。
请在此处提出有关模型设计或搜索mongo集合的解决方案。
答案 0 :(得分:0)
是的,当然应该这样说。您的Meeting类是父类,在运行时无法检测到是Party还是Official Meeting。 Spring Mongo没有操作符的“实例”。对于您的情况,如果您的收藏集同时包含“派对”文档格式和“官方会议”文档格式,则应检查“主题”值是否存在(或检查是否为空,取决于您的数据),以指定其所属的类型以及从中可以使用的类型。查询正确的类型。但是无论如何,以我的经验,我建议您不要使用不必要的文档格式,尽管它是NoSQL。您可以随时添加或删除某些属性,例如“元数据”或数组项,但是某些可以确定文档类型的属性则不应。