0

您能否举个例子说明如何将$all运算符用于我的两个elemMatch对象?

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

如何执行$all( elemMatch1, elemMatch2)(elemMatch1 和 elemMatch2 的所有文档)的查询?

4

1 回答 1

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
于 2013-10-15T08:48:53.243 回答