【问题标题】:How to apply constraints in MongoDB?如何在 MongoDB 中应用约束?
【发布时间】:2012-09-15 00:54:39
【问题描述】:

我已经开始使用 MongoDB,而且我对它还很陌生。 有什么方法可以对 MongoDB 中的文档应用约束? 就像指定主键或将属性视为唯一? 或者指定特定属性大于最小值?

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    要超越索引中本机可用的唯一性约束,您需要使用 Mongoose 之类的东西以及它支持基于字段的 validation 的能力。这将为您提供对最小值之类的支持,但仅当更新通过您的 Mongoose 模式/模型时。

    MongoDB 3.2 更新

    MongoDB 现在原生支持文档验证。

    来自documentation的示例:

    db.createCollection( "contacts",
       { validator: { $or:
          [
             { phone: { $type: "string" } },
             { email: { $regex: /@mongodb\.com$/ } },
             { status: { $in: [ "Unknown", "Incomplete" ] } }
          ]
       }
    } )
    

    【讨论】:

    • 需要说明的是,根据链接用户可以绕过这个验证。然而,这是一个很棒的工具。
    【解决方案2】:

    作为“无模式”数据库,您提到的某些内容必须受到应用程序端的限制,而不是数据库端。 (如“最小值”)

    但是,您可以创建索引(用于查询的键 - 请记住,查询一次只能使用一个索引,因此通常最好围绕查询设计索引,而不是只为您可能查询的每个字段编制索引反对): http://www.mongodb.org/display/DOCS/Indexes#Indexes-Basics

    您还可以创建唯一索引,这将强制执行类似于唯一约束的唯一性(它确实有一些注意事项,例如数组字段): http://www.mongodb.org/display/DOCS/Indexes#Indexes-unique%3Atrue

    【讨论】:

      猜你喜欢
      • 2020-08-18
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 2020-03-29
      • 1970-01-01
      • 1970-01-01
      • 2013-11-17
      • 2022-01-05
      相关资源
      最近更新 更多