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 语法,但它似乎不起作用。如何使 $in 查询工作?事实上,我无法使用 Casbah 的 DSL 进行任何流畅的查询,并且他们无法给出相同的错误消息。请帮忙!

4

2 回答 2

4

问题是这$in不是在字符串上定义的方法。String很可能 Casbah 定义了从对象到包含该方法的类的实例的隐式转换$in。隐式转换需要被import编辑到作用域中才能使用。

您能否指出介绍该$in方法的 Casbah 文档?这就是我们将找到需要导入的内容的地方。

(对于专家:不$应该为编译器生成的字段保留吗?)

于 2011-08-05T18:40:53.773 回答
3

我修好了它!你的回复很有帮助。我错过了隐式转换所需的导入语句,因此将其视为字符串。

我包括在内import com.mongodb.casbah.Imports._,它现在就像一个魅力。感谢您的提示!

于 2011-08-05T19:32:37.770 回答