1

在 casbah 中,MongoDBObject 中有两个方法调用.getAs和,它们以类型参数给出.getAsOrElse的类型返回相关字段的值。

val dbo:MongoDBObject = ...
dbo.getAs[String](param)

这必须使用类型转换,因为我们可以通过将它作为类型参数来获取 a Longas a String,这可能会导致运行时类型转换异常。有没有其他类型安全的方法来检索结果中的原始类型?

这必须是可能的,因为元素的类型信息应该在getAs' 的输出中。

4

3 回答 3

1

查看其作者关于Salat的精彩演示。您正在寻找的是可以与 DBObject 相互转换的 Salat。grater

于 2012-07-09T16:24:19.390 回答
1

Disclamer:我有偏见,因为我是Subset的作者

我构建这个小型库“子集”正是为了能够以DBObject类型安全的方式有效地处理 's 字段(标量和子文档)。查看示例,看看它是否符合您的需求。

于 2012-07-09T18:40:52.410 回答
0

问题是 mongodb 可以为单个字段存储多种类型,所以,我不确定你所说的使这个类型安全是什么意思。没有办法在数据库端强制执行它,所以您是否希望有一种方法可以在 casbah 端强制执行它?为了最安全,你可以做get("fieldName"),并得到一个Object,但在我看来,这几乎不是一个改进。

我一直很高兴使用 Salat + Casbah,当我的数据库记录与我的 Salat 案例类不匹配时,我得到一个运行时异常。我只知道当我更改模型中的类型或为新类型创建新模型(多个模型可以存储在同一个集合中)时,我必须运行迁移脚本。至少 Salat 刨丝器/DAO 方法减少了麻烦(您不必每次访问变量时都指定类型)。

于 2012-07-09T14:12:52.813 回答