【问题标题】:Play2-Scala-Reactivemongo Losing Mongo schema flexibility using ReactiveMongoPlay2-Scala-Reactivemongo 使用 ReactiveMongo 失去 Mongo 模式的灵活性
【发布时间】:2015-03-27 09:57:19
【问题描述】:

我正在尝试将 Play2 与 ReactiveMongo 一起使用来构建我的 Web 应用程序。我花了几天时间阅读相关的文档和教程。 在我看来,MongoDB 最强大的特性之一是模式灵活性,即可以将结构不完全相同但可能彼此不同的文档存储在同一个集合中。例如,一个文档可能具有另一个文档没有的字段。

使用 ReactiveMongo 用例类来实现模型,但用例类显然具有固定的结构。所以类的所有实例都将具有相同的结构。

这是否代表失去了灵活性?或者有办法使用 ReactiveMongo 实现架构灵活性?

【问题讨论】:

    标签: mongodb scala playframework reactivemongo


    【解决方案1】:

    除了 Andre 的回答:ReactiveMongo 还支持文档中的可选字段,作为其案例类中的选项。因此,您可以同时拥有 Scala 类建模文档的便利性和类型安全性以及灵活的文档结构。

    如果您的文档结构是字段名称是完全动态的(这在 Mongo 中通常是一个坏主意),那么正如 Andre 所说,您可能根本不想使用基于案例类的 ReactiveMongo 文档建模.但您通常也可以使用混合方法,其中使用名称-值映射和一些用例类动态反序列化文档的某些方面。

    【讨论】:

      【解决方案2】:

      根据我在 ReactiveMongoReactiveMongo Play plugin 的文档中阅读的内容。它们分别使用 BSON 和 JSON 结构。

      只有当您使用extensions 时,您才能将模型定义为案例类来构建 DAO。因此,您拥有所需的所有灵活性或所需的所有便利。这只是选择您使用的结构的问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-02-26
        • 1970-01-01
        • 2016-06-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多