Mongodb Casbah и обработка списка - PullRequest
0 голосов
/ 21 января 2011

У меня проблемы с написанием этой функции, которая берет строку и возвращает список связанных с ней строк.

(я ожидаю записи типа {_id: ...., hash: "abcde", n: [" a "," b "," ijojoij "]} в mongodb)

def findByHash(hash: Hash) = {
        val dbobj = mongoColl.findOne(MongoDBObject("hash" -> hash.hashStr)) 
        val n = dbobj match {
            case Some(doc: com.mongodb.casbah.Imports.DBObject) => {
                doc("n") match {
                    case Some(n: com.mongodb.casbah.Imports.DBObject) => {
                        Some(List[String]() ++ n map { x => x.asInstanceOf[String] })
                    }
                    case _ => {
                        None  // hash match but no n in object
                    }
                }
            }
            case _ => {
                None  // no hash match
            }
        }
        n
}

Что-то не так с кодом?Вы знаете, как это исправить?

1 Ответ

3 голосов
/ 21 января 2011

doc ("n") возвращает AnyRef, поэтому вы должны явно привести его к BasicDBList.

val n = doc("n").asInstanceOf[BasicDBList]
Some(List[String]() ++ n map { x => x.asInstanceOf[String] })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...