2013-10-14 3 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