2013-10-15 64 views
0

我試圖在Casbah中使用$gt$lt執行elemMatch查詢。

"Testing $gt and $lt in $elemMatch" should "return results" in { 

val TEST = "test" 

val db = MongoClient()(TEST) 
val collection = db(TEST) 

val obj: JsValue = Json.parse("""{ "records" : [{"n" : "Name", "age": 5}]}""") 
val doc: DBObject = JSON.parse(obj.toString).asInstanceOf[DBObject] 

collection.insert(doc) 

val elemMatch = "records" $elemMatch (MongoDBObject("n" -> "Name", "age" $gt 0)) 
val results = collection.find(elemMatch, MongoDBObject("_id" -> 1)) 

val elemMatch線,我看到這個編譯時錯誤:

[error] ...\TestElemMatch.scala:51: ')' expected but integer 
literal found. 
[error]   val elemMatch = "records" $elemMatch (MongoDBObject("n" -> "Name", "age" -> $gt 0)) 
                       ^

http://docs.mongodb.org/manual/reference/operator/query/elemMatch/

回答

2

操作$ GT則採用的是不正確的方式,這應該工作

val elemMatch = MongoDBObject("records" -> MongoDBObject("$elemMatch" -> MongoDBObject("n" -> "Name", "age"->MongoDBObject("$gt"-> 0))))

+0

謝謝你的工作。我將如何使用$ gt和$ lt? –

+0

只需添加另一個條件:val elemMatch = MongoDBObject(「records」 - > MongoDBObject(「$ elemMatch」 - > MongoDBObject(「n」 - >「Name」,「age」 - > MongoDBObject(「$ gt」 - > 0) ,「age」 - > MongoDBObject(「$ lt」 - > 6)))) – grotrianster

相關問題