2011-08-05 34 views
3

我正在試圖在find()中使用casbah的流體查詢。

我的數據是這樣的:

{ "_id" : ObjectId("4d7b26efc58bf2b18f14d9cd"), "srcID" : [ "/m/05zppz" ], "relation" : [ "/location/location/people_born_here" ], "dstID" : [ "/m/06sfnt9" ] } 
{ "_id" : ObjectId("4d7b26efc58bf2b19014d9cd"), "srcID" : [ "/m/05zppz" ], "relation" : [ "/location/location/people_born_here" ], "dstID" : [ "/m/06fqp8" ] } 
{ "_id" : ObjectId("4d7b26efc58bf2b19114d9cd"), "srcID" : [ "/m/05zppz" ], "relation" : [ "/location/location/people_born_here" ], "dstID" : [ "/m/06_7xfd" ] } 

我寫了下面的代碼查詢這樣的:

val srcIDs:List[String] = List("/m/05zppz", "/m/06sfnt9") 
val query = "srcID" $in srcIDs 

代碼段不編譯並報告這個錯誤:

error: value $in is not a member of java.lang.String 
query = ("srcID" $in srcIDs) 

對於$ in,casbah文檔具有上述語法,但似乎不起作用。 如何使$ in查詢工作?事實上,我無法使用Casbah的DSL進行任何流暢的查詢,也無法給出同樣的錯誤消息。請幫忙!

+1

只是因爲您是該網站的新手而僅供參考:一點點格式化工作就有很長的路要走。你也可以在打字時看到你的文章的預覽! – Dylan

回答

4

問題是$in不是在字符串上定義的方法。最可能的是,Casbah定義了從String對象到包含方法$in的類的實例的隱式轉換。在可以使用之前,隱式轉換需要被import修改爲範圍。

請問我們可以給我們介紹一下$in方法的Casbah文檔嗎?這就是我們將找到需要導入的地方。

(對於專家:不$應該被保留用於編譯器生成的場?)

3

我定了!你的回覆非常有幫助。我錯過了隱式轉換所需的import語句,因此它將它視爲String。

我包括import com.mongodb.casbah.Imports._它現在就像一個魅力。感謝提示!