$elemMatch в Касбе

Для этой структуры документа:

_id: 1, records : [{n : "Name", v: "Will"}]

Как я могу выполнить запрос оболочки $elemMatch Mongo из Casbah?

db.coll.find( {records : {$elemMatch : {n: : "Name", v : "Will"} } } )

Я попробовал это из тестового кода Casbah каталога, но я получил 0 результатов.

var builder = MongoDBObject()
val elemMatch = "records" $elemMatch (MongoDBObject
                                      ("n" -> "Name", "v" -> "Will"))
builder = builder ++ elemMatch
collection.find(builder)

Я получаю несоответствие типов в строке collection.find(builder).

EDIT Предоставлен дополнительный текст для ошибки времени компиляции.

[error]  found   : collection.CursorType
[error]     (which expands to)  com.mongodb.casbah.MongoCursor
[error]  required: Int
[error]         collection.find(MongoDBObject(), elemMatch)
[error]                        ^
[error] one error found

Полный список — https://gist.github.com/kman007us/6817354


person Kevin Meredith    schedule 03.10.2013    source источник
comment
Какую версию mongo и версию casbah вы используете?   -  person Vinicius Miana    schedule 04.10.2013
comment
Монго 2.4.6 и Касба 2.6.3   -  person Kevin Meredith    schedule 04.10.2013
comment
doh - я забыл поставить in в конце моего метода scalatest   -  person Kevin Meredith    schedule 04.10.2013


Ответы (1)


Там есть небольшая дополнительная упаковка, которая не нужна, как builder - вот очищенный пример:

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

coll += MongoDBObject("records" -> List(MongoDBObject("n" -> "Name", "v" -> "Will"), 
                                        MongoDBObject("n" -> "age", "v" -> 100)))

val elemMatch = "records" $elemMatch MongoDBObject("n" -> "Name", "v" -> "Will")
coll.find(elemMatch).count
person Ross    schedule 04.10.2013