【问题标题】:Enforcing schema validation in MongoDB在 MongoDB 中强制执行模式验证
【发布时间】:2015-11-09 12:42:27
【问题描述】:

我正在寻找方法来验证插入 MongoDB 的数据是否与架构匹配,例如具有所有必需的字段和正确的数据类型。我知道 Mongo 本身是无模式的,但如果我可以在将数据传递给 Mongo 驱动程序之前在应用程序级别验证数据,那就太好了。

我看过 JSON 架构。我最大的犹豫是我只能找到一个用于模式验证的 Java 库,我不知道我是否应该信任它,我更喜欢 Apache 或 Google 支持的库。

我还研究了 Apache Thrift、Avro 和 Protocol Buffers,它们不是专门的验证框架,但它们都有一个模式的概念。如果有一种方法可以搭载其中一个来执行验证,我会很感兴趣。

有什么建议吗?还是我应该接受 Mongo 的无模式,甚至不去尝试验证数据?

【问题讨论】:

  • 并非所有东西都是由 apache 基金会或 Google 制造的,即 Facebook 也制造东西。不,您应该验证数据,一种常见的方法是使用活动记录模型来验证一组定义的属性
  • 谢谢,我可能应该澄清我关于 Apache 和 Google 的声明,以免过于势利。我喜欢选择在开发人员或社区中具有良好支持记录的项目。因此,无论是 Apache 还是他地下室中的单个开发人员,只要我有信心,如果五年后在库中发现错误,我将有一个很好的途径来修复它,这无关紧要。
  • 是的,我明白你的意思了 :) 正如我发现的那样,封闭或开源软件总是存在问题

标签: java mongodb


【解决方案1】:

在即将推出的 Mongo 3.2 版本中,他们添加了document validation (slides)。

您可以使用几乎所有 mongo 查询运算符($geoNear$near$nearSphere$text$where 除外)使用 validator 选项为每个集合指定验证规则。您可以在我的answers 中了解更多信息。

【讨论】:

  • 但据我了解,MongoDB 中的文档验证不是针对模式(XSD 或 JSON 模式)的验证。
【解决方案2】:

不确定您是否仍在寻找,但对象文档映射器 (ODM) 可以解决问题。

我已经检查了 MorphiaSpring Data - MongoDB 两者都可以解决您的类型安全问题,因为它们会将您的文档直接映射到 Java 类。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-08
    • 2019-05-01
    • 2018-07-17
    • 1970-01-01
    • 2016-05-07
    • 2021-11-28
    • 2018-07-31
    • 1970-01-01
    相关资源
    最近更新 更多