1

我们正在使用 mongodb,并用 scala 重写部分堆栈。我想知道我是否应该坚持使用 mophia,或者使用诸如子集的 scala mongodb 库。

问题是我能从子集中得到什么?例如,对于 mophia,我不必像在子集中必须手动定义 mongodb 字段名称...

子集真的值得使用吗?

4

4 回答 4

3

我们使用casbah + salat,几乎在所有情况下都可以正常工作。

于 2012-10-08T07:03:11.613 回答
0

除了 ORM-Mapper/Client-Libraries,我建议你试试Rouge 。它将为您提供一个很好的 Mongo Query DSL。Rogue 1.X 将仅支持Lift-MongoDB,但 2.x 版(将在不久的将来发布)将适用于更多的 MongoDB 库。

一个示例查询将是(带有编译时类型检查的纯 Scala 代码):

Venue where (_.mayor eqs 1234) and (_.categories contains "Thai") fetch(10)

它查询 Venue 集合中的 10 个条目,其中 1234 是市长,Thai 是其类别之一。

于 2012-10-08T06:42:38.793 回答
0

我是Subset的作者。我会说“子集”并不是一种真正的 ORM 库。它没有处理数据库和集合的方法,将其留给 Java/Scala 驱动程序。但它更侧重于 MongoDB 文档的转换。这个转换核心相当通用,不仅适用于读取/写入字段,而且适用于需要执行文档迁移等应用程序。Subset 提供的查询/更新构建器构建在这个“核心”之上。

也就是说,如果您需要 ORM,确实有更简单的选择。我从来没有打算让 Subset 与真正的 ORM 库竞争,我已经填补了我在项目中遇到的空白。

于 2013-02-13T09:35:36.187 回答
0

对于 Scala,您应该考虑使用Casbah,这是一个官方支持的 MongoDB 接口,它构建在 Java 驱动程序上。

Casbah 的方法旨在在 MongoDB 之上添加流畅的、Scala 友好的语法,并处理常见类型的转换。如果您尝试将 Scala List 或 Seq 保存到 MongoDB,我们会自动将其转换为 Java 驱动程序可以序列化的类型。如果您阅读 Java 类型,我们会在它到达您的代码之前将其转换为可比较的 Scala 类型。所有这些都是为了让您专注于使用 Scala 惯用语编写最好的 Scala 代码。付出了巨大的努力,为您提供您期望从 Scala 获得的功能性和隐式转换工具,以及 MongoDB 的强大功能和灵活性。

Casbah 为 GridFS、Map/Reduce 和核心 Mongo API 提供了改进的接口。它还提供了一种模拟内部 DSL 的流畅查询语法,并允许您编写看起来像在 JS Shell 中编写的代码。还支持为常见数据类型轻松添加新的序列化/反序列化机制。

于 2012-10-08T06:34:26.557 回答