在casbah中的find()查询中使用$ in

时间:2011-08-05 17:53:05

标签: scala casbah

我正在尝试在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进行任何流畅的查询,并且他们无法提供相同的错误信息。请帮忙!

2 个答案:

答案 0 :(得分:4)

问题是$in不是在字符串上定义的方法。很可能Casbah定义了从String对象到包含方法$in的类的实例的隐式转换。隐式转换需要import进入范围才能使用。

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

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

答案 1 :(得分:3)

我修好了!你的回复非常有帮助。我错过了隐式转换所需的import语句,因此将其视为String。

我加入了import com.mongodb.casbah.Imports._,它现在就像一个魅力。谢谢你的提示!