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