Scala 如何通过casbah获取文档密钥?

Scala 如何通过casbah获取文档密钥?,scala,mongodb,casbah,Scala,Mongodb,Casbah,我的文档如下所示: { "dynamic_field" : "...", "another_dynamic_field" : "..." "yet_another_dynamic_field" : "..." } “动态场”的意思是我不知道它的名字。所以我想得到一个字符串集合,它保存了这个文档的键。然后按键获取文档的值(值的结构定义良好) 所以,我试着做以下几点

我的文档如下所示:

{
  "dynamic_field" : "...",
  "another_dynamic_field" : "..."
  "yet_another_dynamic_field" : "..."
}
“动态场”的意思是我不知道它的名字。所以我想得到一个字符串集合,它保存了这个文档的键。然后按键获取文档的值(值的结构定义良好)

所以,我试着做以下几点

val dbObject = ... 
val keys = dbObject.keys()
for(
  key <- keys; /java.lang.ClassCastException: com.mongodb.BasicDBList cannot be cast to scala.collection.Seq at this line
  val value = dbObject.as[String](key) /
) yield new MyClass(key, value)
val dbObject=。。。
val keys=dbObject.keys()
为了(

关键我不确定在你的演员阵容中有什么突破,但请确保你在范围内有正确的暗示:

import com.mongodb.casbah.Imports._
我完全不确定“BasicDBList”是从哪里来的,但我认为您的迭代过于复杂了。只要隐式对象在范围内,您就可以将DBObject直接视为Scala对象。这意味着您可以立即迭代其键和值:

scala> val doc = conn("worldDevelopmentIndicators.in").findOne().get
doc: com.mongodb.DBObject = { "_id" : "4ddab3c62511cea643f3e5a0" , "SeriesCode" : "AG.AGR.TRAC.NO" , "Series Name" : "\"Agricultural machinery" , "Country Code" : " tractors\"" , "Country Name" : "AFG" , "1960" : "Afghanistan" , "1962" : 120.0 , "1963" : 150.0 , "1964" : 200.0 , "1965" : 200.0 , "1966" : 300.0 , "1967" : 400.0 , "1968" : 500.0 , "1969" : 500.0 , "1970" : 550.0 , "1971" : 550.0 , "1972" : 600.0 , "1973" : 600.0 , "1974" : 585.0 , "1975" : 570.0 , "1976" : 550.0 , "1977" : 530.0 , "1978" : 515.0 , "1979" : 495.0 , "1980" : 450.0 , "1981" : 400.0 , "1982" : 350.0 , "1983" : 300.0 , "1984" : 250.0 , "1985" : 200.0 , "1986" : 150.0 , "1987" : 150.0 , "1988" : 120.0 , "1989" : 120.0 , "1990" : 120.0 , "1991" : 120.0 , "1992" : 120.0 , "1993" : 110.0 , "1994" : 110.0 , "1995" ...

for ((k,v) <- doc) println(k) 
/*
 _id
 SeriesCode
 Series Name
 Country Code
 Country Name
*/

// you also have the value in this iteration in V...
scala> for (kv <- doc) println(kv) 
(_id,4ddab3c62511cea643f3e5a0)
(SeriesCode,AG.AGR.TRAC.NO)
(Series Name,"Agricultural machinery)
(Country Code, tractors")
(Country Name,AFG)
(1960,Afghanistan)
scala>val doc=conn(“worldDevelopmentIndicators.in”).findOne().get
文档:com.mongodb.DBObject={“\u id:”4ddab3c6251cea643f3e5a0“,”seriecode:”AG.AGR.TRAC.NO“,”系列名称“,”农业机械“,”国家代码“:”拖拉机“,”国家名称“:”AFG“,”1960:”阿富汗“,”1962:”120.0,“1963:”150.0,“1964:”200.0,“1965:”200.0”,“1966:”300.0,“1967:”400.0”,“1968:”500.0,"1969" : 500.0 , "1970" : 550.0 , "1971" : 550.0 , "1972" : 600.0 , "1973" : 600.0 , "1974" : 585.0 , "1975" : 570.0 , "1976" : 550.0 , "1977" : 530.0 , "1978" : 515.0 , "1979" : 495.0 , "1980" : 450.0 , "1981" : 400.0 , "1982" : 350.0 , "1983" : 300.0 , "1984" : 250.0 , "1985" : 200.0 , "1986" : 150.0 , "1987" : 150.0 , "1988" : 120.0 , "1989" : 120.0 , "1990" : 120.0 , "1991" : 120.0 , "1992" : 120.0 , "1993" : 110.0 , "1994" : 110.0 , "1995" ...

对于((k,v)对于(kv我不确定在你的铸造过程中有什么问题,但请确保你在范围内有正确的含义:

import com.mongodb.casbah.Imports._
我完全不确定“BasicDBList”是从哪里来的,但我认为您的迭代过于复杂了。只要隐式对象在范围内,您就可以将DBObject直接视为Scala对象。这意味着您可以立即迭代其键和值:

scala> val doc = conn("worldDevelopmentIndicators.in").findOne().get
doc: com.mongodb.DBObject = { "_id" : "4ddab3c62511cea643f3e5a0" , "SeriesCode" : "AG.AGR.TRAC.NO" , "Series Name" : "\"Agricultural machinery" , "Country Code" : " tractors\"" , "Country Name" : "AFG" , "1960" : "Afghanistan" , "1962" : 120.0 , "1963" : 150.0 , "1964" : 200.0 , "1965" : 200.0 , "1966" : 300.0 , "1967" : 400.0 , "1968" : 500.0 , "1969" : 500.0 , "1970" : 550.0 , "1971" : 550.0 , "1972" : 600.0 , "1973" : 600.0 , "1974" : 585.0 , "1975" : 570.0 , "1976" : 550.0 , "1977" : 530.0 , "1978" : 515.0 , "1979" : 495.0 , "1980" : 450.0 , "1981" : 400.0 , "1982" : 350.0 , "1983" : 300.0 , "1984" : 250.0 , "1985" : 200.0 , "1986" : 150.0 , "1987" : 150.0 , "1988" : 120.0 , "1989" : 120.0 , "1990" : 120.0 , "1991" : 120.0 , "1992" : 120.0 , "1993" : 110.0 , "1994" : 110.0 , "1995" ...

for ((k,v) <- doc) println(k) 
/*
 _id
 SeriesCode
 Series Name
 Country Code
 Country Name
*/

// you also have the value in this iteration in V...
scala> for (kv <- doc) println(kv) 
(_id,4ddab3c62511cea643f3e5a0)
(SeriesCode,AG.AGR.TRAC.NO)
(Series Name,"Agricultural machinery)
(Country Code, tractors")
(Country Name,AFG)
(1960,Afghanistan)
scala>val doc=conn(“worldDevelopmentIndicators.in”).findOne().get
文档:com.mongodb.DBObject={“\u id:”4ddab3c6251cea643f3e5a0“,”seriecode:”AG.AGR.TRAC.NO“,”系列名称“,”农业机械“,”国家代码“:”拖拉机“,”国家名称“:”AFG“,”1960:”阿富汗“,”1962:”120.0,“1963:”150.0,“1964:”200.0,“1965:”200.0”,“1966:”300.0,“1967:”400.0”,“1968:”500.0,"1969" : 500.0 , "1970" : 550.0 , "1971" : 550.0 , "1972" : 600.0 , "1973" : 600.0 , "1974" : 585.0 , "1975" : 570.0 , "1976" : 550.0 , "1977" : 530.0 , "1978" : 515.0 , "1979" : 495.0 , "1980" : 450.0 , "1981" : 400.0 , "1982" : 350.0 , "1983" : 300.0 , "1984" : 250.0 , "1985" : 200.0 , "1986" : 150.0 , "1987" : 150.0 , "1988" : 120.0 , "1989" : 120.0 , "1990" : 120.0 , "1991" : 120.0 , "1992" : 120.0 , "1993" : 110.0 , "1994" : 110.0 , "1995" ...
对于(k,v)对于(kv