2013-10-14 61 views
0

您能否給我舉一個例子,說明如何在我的兩個elemMatch物件上使用$all運營商?

val elemMatch1 = foo() 
val elemMatch2 = bar() 

我怎麼能執行$all(elemMatch1, elemMatch2)查詢(所有文件,其中elemMatch1和elemMatch2)?

回答

1

我不知道它讓多少意義的混合$all$elemMatch但是從文檔$all如下:

{ <field>: { $all: [ <value> , <value1> ... ] } 

$ elemMatch如下:

{ array: { $elemMatch: <document> } } 

不幸的是,卡斯巴DSL韓元因爲$all需要一個列表,並且$elemMatch需要一個字符串,所以您必須手動創建文檔:

import com.mongodb.casbah.Imports._ 
val coll = MongoClient()("test")("testB") 

coll += MongoDBObject("array" -> List(
      MongoDBObject("value1" -> 1, "value2" -> 0), 
      MongoDBObject("value1" -> 1, "value2" -> 2) 
     )) 

val elemMatch = MongoDBObject("$elemMatch" -> MongoDBObject("value1" -> 1, "value2" -> 2)) 
val query = "array" $all List(elemMatch) 

coll.find(query).count