我正在尝试在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进行任何流畅的查询,并且他们无法提供相同的错误信息。请帮忙!
答案 0 :(得分:4)
问题是$in
不是在字符串上定义的方法。很可能Casbah定义了从String
对象到包含方法$in
的类的实例的隐式转换。隐式转换需要import
进入范围才能使用。
您能否指出我们介绍$in
方法的Casbah文档?这就是我们将找到需要导入的内容。
(对于专家:是不是$
应该为编译器生成的字段保留?)
答案 1 :(得分:3)
我修好了!你的回复非常有帮助。我错过了隐式转换所需的import语句,因此将其视为String。
我加入了import com.mongodb.casbah.Imports._
,它现在就像一个魅力。谢谢你的提示!