如何在MongoDB中应用约束?

Arp*_*nki 22 mongodb

我已经开始使用MongoDB了,我对它很新.有什么办法可以在MongoDB中对文档应用约束吗?像指定主键或将属性视为唯一?或者指定特定属性是否大于最小值?

Joh*_*yHK 49

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

MongoDB 3.2更新

MongoDB现在支持文档验证.

文档中的示例:

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


Eve*_*man 20

作为一个"无模式"的数据库,你提到的一些东西必须从应用程序方面而不是数据库方面受到限制.(例如"最低价值")

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

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