6
我有一个类层次结构设计为存储用户通知:的MongoDB:查询通过@DBRef
@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> {
}
...
这是返回多态性阵列,让我任何类型的数据存储在“标签”领域是有用的。
@Document
public class WrappedA {
@Id
private String id;
@DBRef
private JetAnotherClass referenced;
...
}
查询的“标签”的领域工作得很好:
db.NotificationA.find({"tag.$id": ObjectId("507b9902...32a")})
但我需要在JetAnotherClass领域查询(两个级别,当包装的对象包含@DBRef领域的问题开始@DBRef字段)。我试着点符号,并与子对象,但它返回null:
点标记:
db.NotificationA.findOne({"tag.$referenced.$id": ObjectId("508a7701...29f")})
子对象:
db.NotificationA.findOne({"tag.$referenced": { "_id": ObjectId("508a7701...29f") }})
任何帮助吗? 在此先感谢!
好吧,我似乎犯了一个概念错误。有没有办法从Java客户端解决这个问题? – Roi
@Roi唯一的方法是手动解析JOINs客户端,它在所有平台上都是非常标准的:http://stackoverflow.com/questions/4067197/mongodb-and-joins – Sammaye