我已经开始使用MongoDB了,而且我对它还很陌生。有没有什么方法可以在MongoDB中对文档应用约束?比如指定一个主键或将一个属性视为唯一的?或者指定一个特定的属性大于最小值?
093gszye1#
MongoDB现在原生地支持文档验证。documentation示例:
db.createCollection( "contacts", { validator: { $or: [ { phone: { $type: "string" } }, { email: { $regex: /@mongodb\.com$/ } }, { status: { $in: [ "Unknown", "Incomplete" ] } } ] } } )
要超越索引中固有的唯一性约束,需要使用Mongoose之类的东西,以及它支持基于字段的validation的能力,这将为最小值之类的东西提供支持,但只有在更新通过Mongoose模式/模型时才能提供支持。
bn31dyow2#
作为一个“无模式”数据库,您提到的一些事情必须从应用程序端进行约束,而不是从数据库端进行约束(例如“最小值”)。但是,您可以创建索引(查询的关键字--请记住,一个查询一次只能使用一个索引,因此通常最好围绕查询来设计索引,而不是仅为可能查询的每个字段建立索引):http://www.mongodb.org/display/DOCS/Indexes#Indexes-Basics您还可以创建唯一索引,它将强制执行类似于唯一约束的唯一性(它确实有一些警告,例如数组字段):http://www.mongodb.org/display/DOCS/Indexes#Indexes-unique%3Atrue
2条答案
按热度按时间093gszye1#
MongoDB现在原生地支持文档验证。
documentation示例:
要超越索引中固有的唯一性约束,需要使用Mongoose之类的东西,以及它支持基于字段的validation的能力,这将为最小值之类的东西提供支持,但只有在更新通过Mongoose模式/模型时才能提供支持。
bn31dyow2#
作为一个“无模式”数据库,您提到的一些事情必须从应用程序端进行约束,而不是从数据库端进行约束(例如“最小值”)。
但是,您可以创建索引(查询的关键字--请记住,一个查询一次只能使用一个索引,因此通常最好围绕查询来设计索引,而不是仅为可能查询的每个字段建立索引):http://www.mongodb.org/display/DOCS/Indexes#Indexes-Basics
您还可以创建唯一索引,它将强制执行类似于唯一约束的唯一性(它确实有一些警告,例如数组字段):http://www.mongodb.org/display/DOCS/Indexes#Indexes-unique%3Atrue