对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。

指定允许的字段值

当创建一个 JSON 模式时,可以指定一个特定的字段中允许使用哪些值。使用此功能可确保您的字段值处于一组预期值内,例如国家/地区列表。同样,将数据插入到一个集合中时,可以使用此功能防止人为错误,例如拼写错误。

要指定允许值的列表,请在 JSON 模式中使用 enum 关键字。enum 关键字的意思是“枚举”,用来列出字段的可能值。

考虑一家只将产品运送到法国、英国和美国的服装公司。在验证器中,可以列出允许的国家/地区值,并拒绝指定了其他国家/地区的文档。

1

创建 shipping 集合并使用 $jsonSchema 运算符设置模式验证规则:

db.createCollection("shipping", { validator: { $jsonSchema: { bsonType: "object", title: "Shipping Country Validation", properties: { country: { enum: [ "France", "United Kingdom", "United States" ], description: "Must be either France, United Kingdom, or United States" } } } }} )

country 对象中的 enum 字段仅允许 country 字段为 France、United Kingdom 或 United States 的文档。

2

以下插入操作失败,因为 country 是 Germany,不在允许值列表中。

db.shipping.insertOne( { item: "sweater", size: "medium", country: "Germany"} )

操作返回此错误:

MongoServerError: Document failed validationAdditional information: { failingDocumentId: ObjectId("630d1057931191850b40d0aa"), details: { operatorName: '$jsonSchema', title: 'Shipping Country Validation', schemaRulesNotSatisfied: [ { operatorName: 'properties', propertiesNotSatisfied: [ { propertyName: 'country', description: 'Must be either France, United Kingdom, or United States', details: [ { operatorName: 'enum', specifiedAs: { enum: [ 'France', 'United Kingdom', 'United States' ] }, reason: 'value was not found in enum', consideredValue: 'Germany' } ] } ] } ] }}
3

将 country 字段更改为允许值之一后,插入成功:

db.shipping.insertOne( { item: "sweater", size: "medium", country: "France"} )
4

要确认文档已成功插入,查询 shipping 集合:

db.shipping.find()

MongoDB 返回文档:

[ { _id: ObjectId("630d10d5931191850b40d0ab"), item: 'sweater', size: 'medium', country: 'France' }]
给本页内容打分

在此页面上