我有一个类层次结构设计为存储用户通知:
@Document
public class Notification<T> {
@Id
private String id;
@DBRef
private T tag;
...
}
@Document
public class NotificationA extends Notification<WrappedA> {
}
@Document
public class NotificationB extends Notification<WrappedB> {
}
...
这是返回多态性阵列,让我任何类型的数据存储在“标签”领域是有用的。 这个问题开始时包装的对象包含@DBRef字段:
@Document
public class WrappedA {
@Id
private String id;
@DBRef
private JetAnotherClass referenced;
...
}
在“标签”的领域查询正常工作:
db.NotificationA.find( {"tag.$id": ObjectId("507b9902...32a")} )
但我需要在JetAnotherClass领域(@DBRef领域的两个级别)查询。 我试着点符号,并与子对象,但它返回null:
点符号:
db.NotificationA.findOne( {"tag.$referenced.$id": ObjectId("508a7701...29f")} )
子对象:
db.NotificationA.findOne( {"tag.$referenced": { "_id": ObjectId("508a7701...29f") }} )
任何帮助吗? 提前致谢!