- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我在 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/
有没有一种简单的方法可以将 List 转换为 MongoDBList(或 BasicDBList)? 最佳答案 scala> val list = List("foo", "bar") list:
我希望使用 Scala 2.9.x 和 Casbah 实现我的 DAO 访问层。鉴于我的实体是一个带有参数的案例类: case class Price (Id: Option[String], Pri
我正在使用 Casbah Scala 驱动程序对 MongoDB 数据库执行 CRUD 操作。我想更新特定文档中的某些字段。我正在使用 findAndModify 方法,但令我惊讶的是,整个文档都被重
我有以下代码: def authenticateByUsername(username: String, password:String): Boolean = { val user = use
在 casbah 中,我看到在 MongoCollection 上定义了以下函数: def insert[A](docs: A*)(implicit dbObjView: (A) ⇒ commons.
我想使用 casbah 执行查询,以查找未设置某个字段(该字段不存在)或该字段具有特定值的所有对象。 我试过用 val query = ("_id.serviceName" $in serviceNa
如何在 Collection#find(/* HERE */) 使用正则表达式,例如: val coll = MongoConnection()("foo")("bar") for(x ".*son
我正在使用 Casbah 连接和查询 Mongo 数据库。现在我正在尝试查询值不为空的字段。 使用直接的 Mongo 语法,我想要的查询是 collection.find({"key" : {$ne
我有一个从 MongoDB 获取端口号的简单代码。我用的是scala,驱动当然是casbah。 def getPortNo : Int { val query = MongoDBObjec
我必须使用 casbah scala 客户端管理与 MongoDb 的多个数据库连接。我有一个可行的近似值但会打开数百个连接。 我想保存一个 Map[String, MongoDB],它为每个数据库保
我已将 casbah 添加到我的依赖项中使用 com.mongodb.casbah casbah_2.8.0 2.1.5.0 然后我就写了一个简单的mongo连接语句 val
我正在使用 Casbah 2.9.2 我的 mongodb 架构如下: [ _id:“三角形”,信息:[颜色:“红色”,线:“细”,UseID:“1”,SourceId:“2”]] 我希望能够编写一个
我在 MongoDB 中有一个如下所示的文档: {"_id":"asdf", "data":[ {"a":"1","b":"2"}, {"a":"3","b":"4"}, {"
在 Play 应用程序中,使用 Salat 和 Casbah,我试图将 DBObject 反序列化为 Task 类型的对象,但是当调用 .asObject: No implicit view avai
我目前正在使用 Casbah 和 MongoDB 来实现网络服务。到目前为止,我没有遇到任何问题。我也在使用 Scala。 但是,我只是想知道是否有比 Casbah 更好的东西来执行大量 find/f
我正在尝试在 find() 中使用 casbah 的流畅查询。 我的数据是这样的: { "_id" : ObjectId("4d7b26efc58bf2b18f14d9cd"), "srcID" :
我正在使用 mongo cashbah Scala 驱动程序,我想在我的代码中使用连接池,但我不确定我的代码是否使用连接池,我也读到我们只需要创建一次 MongoClient 实例并再次重用它,所以我
编译时出现以下错误: [error] (*:update) sbt.ResolveException: unresolved dependency: org.mongodb#casbah_2.11;2
我知道 MongoDB 中的对象可以包含多个级别的数据(就像 JSON 对象一样)。但是,Casbah 驱动程序教程仅涵盖“平面”对象的创建,其中只有一层数据。如何使用 Casbah 创建和使用多级对
我已经使用其命令行客户端在 MongoDB 中定义了一个函数。 function something(){...} 我想知道如何使用 Scala 中的 casbah 执行自定义 MongoDB 函数。
我是一名优秀的程序员,十分优秀!