我有一个专为存储用户通知设计的类层次结构:
@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") }} )
有什么帮助吗?提前致谢!