您能否举例说明如何将$all
运算符用于我的两个elemMatch
个对象?
val elemMatch1 = foo()
val elemMatch2 = bar()
如何执行$all( elemMatch1, elemMatch2)
的查询(elemMatch1和elemMatch2的所有文件)?
答案 0 :(得分:1)
我不确定混合$all
和$elemMatch
有多大意义,但是文档$all
如下:
{ <field>: { $all: [ <value> , <value1> ... ] }
$ elemMatch如下:
{ array: { $elemMatch: <document> } }
不幸的是,casbah 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