gpt4 book ai didi

scala - 读取 Casbah MongoDB 查询的结果

转载 作者:可可西里 更新时间:2023-11-01 09:53:02 25 4
gpt4 key购买 nike

我在 MongoDB 中有一个如下所示的文档:

{"_id":"asdf", "data":[
{"a":"1","b":"2"},
{"a":"3","b":"4"},
{"a":"5","b":"6"},
]}

我想使用 Scala 查询该对象,并将“数据”中的条目转换为案例类列表。 经过几个小时的工作,我还没有想出可以编译的东西。有人可以用这些信息指出我的教程吗? This tutorial没有任何帮助。我已经尝试了所有我能想到的嵌套映射、fors、foreaches、casts 和模式匹配的组合。

编辑:我的 super 丑陋但现在看似有效的代码现在是这样的:

def getData(source_id:String) = {
val source = collection.findOne(MongoDBObject("_id" -> source_id)).get
val data = source.get("data").asInstanceOf[BasicDBList]

var ret:List[Data] = List()

val it = presses.iterator
while(it.hasNext) {
val item = it.next.asInstanceOf[BasicDBObject]

ret = Data(
item.get("a").asInstanceOf[String],
item.get("b").asInstanceOf[String]
) :: ret
}

ret
}

请有人告诉我有更好的方法。

最佳答案

无论如何你都在使用案例类,最简单的解决方案是只使用 salat – 它将自动序列化/反序列化到一个 mongo 连接,并使用非常少的样板文件。

一个小问题,但在您的代码中,您应该能够简单地map 跨越 DBObject 持有结构,而不是手动改变 ret 变量:

val ret = presses.map { item => Data(…) }

如果你真的想要一个列表,你可能需要调用 .toList(尽管你可能只需要 Seq 或 Iterable)

关于scala - 读取 Casbah MongoDB 查询的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10988237/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com