2016-05-17 58 views
1

訪問值執行MongoDB的查詢我的結果後的類型爲:res = Seq[Document]從MongoDB的使用Scala

要訪問BsonString我用:res (0).get("n"))

將返回:

Some(BsonString{value='value'}) 

我怎樣才能從BsonString作爲字符串訪問值value

訪問值Some(BsonString{value='value'})返回BsonString{value='value'}是否需要使用庫(例如Jackson)將BsonString{value='value'}轉換爲Scala對象,然後訪問值?

回答

1

我想你使用的是mongo scala驅動程序(而不是ReactiveMongo)。

在這種情況下,返回的BsonString是一個java對象; here是指向javadoc的scaladoc。

您可以通過getValue方法訪問該值。

當你回到Option對象時,我建議使用適當的理解來避免運行時異常;是這樣的:

val optionalResult = for { 
    doc <- res.headOption 
    element <- doc.get[BsonString]("n") 
} yield (element.getValue) 

optionalResultOption[String]型。 然後你可以檢查你是否有價值並使用它;通過地圖,flatMap,foreach甚至if (optionalResult.isDefined)

+0

謝謝,你讓我在正確的軌道,我需要修改你的理解到:VAL optionalResult = {爲DOC < - res.headOption 元素< - doc.get( 「N」) }收益(元.asString.getValue) –

+0

我編輯了答案,明確要求一個'BsonString'。 'asString'方法在java類中定義,如果它不是'BsonString',則會引發異常。如果值不是'BsonString',則最好使用scala中定義的機制'Document'類,它將返回'None' –