2011-08-05 6 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) 

casbahのマニュアルには$ inの構文がありますが、うまく動作していないようです。 $をクエリに使用するには?実のところ、私はCasbahのDSLを使って質問を得ることができず、同じエラーメッセージを出すことができませんでした。助けてください!

+1

あなたはサイトを初めて利用しているので、ちょっとしたことです。書式設定の少しは、長い道のりです。入力時に投稿のプレビューが表示されます。 – Dylan

答えて

4

問題は$inが文字列で定義されたメソッドではないということです。ほとんどの場合、CasbahはStringオブジェクトからメソッド$inを含むクラスのインスタンスへの暗黙的な変換を定義します。暗黙の変換を使用するには、スコープにimportを入力する必要があります。

$inメソッドを紹介するCasbahのドキュメントを教えてください。それが、私たちが輸入する必要があるものを見つける場所です。

(専門家のためには:$はコンパイラ生成されたフィールドのために確保することが想定されていない?)

3

私はそれを修正!返事はとても役に立ちました。私は暗黙の変換に必要なimport文を見逃していました。したがって、それをStringとして扱いました。

私はimport com.mongodb.casbah.Imports._を含んでおり、今のところ魅力的です。ヒントありがとう!

関連する問題