2012-08-08 83 views
1

使用mongo-2.8.0.jar,我想獲取db-reference到另一個db。但是代碼(Groovy中)

def ref = new DBRef(db,"mails",id) 
println ref 

版畫一樣的東西:

{ "$ref" : "mails", "$id" : "50211d8e44ae1f34b4f4b3bd" } 

,並存儲在數據庫中沒有太大$分貝!

如何強制Java Mongo驅動程序保存$ db?

回答

2

Java驅動程序不支持可選的$ db字段,如MongoDB documentation中所述。並非所有驅動程序都支持$ db字段。 Java驅動程序假定該集合與存儲引用的文檔位於同一個數據庫中。

0

DBRef的DB對象作爲DBRef的父類DBRefBase的私有成員存儲,並且可以通過getDB()訪問。您只需調用ref.getDB()

+0

我想讓數據庫存儲到數據庫,而不是在java代碼中使用它。如果錯過了,我會在使用Morphia嵌入引用獲取對象時發生異常:(com.google.code.morphia.mapping.MappingException:引用({「$ ref」:「mails」,「$ id」:「 5021630744ae3176f5a34968「})無法讀取) – 2012-08-08 21:10:07

+1

Morphia正在嘗試自動檢索引用的文檔,但無法找到它。也許查詢目標數據庫以確保引用的文檔存在。當Morphia解析引用時,它將默認爲當前數據庫,除非您在$ ref字段中使用完整名稱空間指定它。嘗試「$ ref」:「dbname.mails」 – blimpyacht 2012-08-09 22:45:07