30

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

4

2 回答 2

55

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

MongoDB 3.2 更新

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

文档中的示例:

db.createCollection( "contacts",
   { validator: { $or:
      [
         { phone: { $type: "string" } },
         { email: { $regex: /@mongodb\.com$/ } },
         { status: { $in: [ "Unknown", "Incomplete" ] } }
      ]
   }
} )
于 2012-09-23T13:40:48.380 回答
25

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

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

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

于 2012-09-23T06:50:27.163 回答