可以將集合設定為根據 JSON Schema 驗證文件。這使您能夠要求文件在插入或更新至集合之前,必須具有特定的結構。您可以使用 https://json-schema.dev.org.tw 中描述的方式指定 JSON Schema。Schema 驗證是由伺服器執行,如果集合中的文件未根據指定的 JSON Schema 驗證,伺服器會傳回錯誤訊息。如需 MySQL 中 JSON Schema 驗證的詳細資訊,請參閱 JSON Schema 驗證函式。本節說明如何設定集合以根據 JSON Schema 驗證文件。
若要啟用或修改 JSON Schema 驗證,請向集合提供類似以下的 validation
JSON 物件
{
validation: {
level: "off|strict",
schema: "json-schema"
}
}
在此,validation
是 JSON 物件,其中包含您可以用來設定 JSON Schema 驗證的索引鍵。第一個索引鍵是 level
,其值可以是 strict
或 off
。第二個索引鍵 schema
是一個 JSON Schema,定義於 https://json-schema.dev.org.tw。如果將 level
索引鍵設定為 strict
,文件會在新增至集合時根據 json-schema
進行驗證,或者,如果它們已經在集合中,則在它們透過某些操作更新時進行驗證。如果文件未通過驗證,伺服器會產生錯誤,且操作會失敗。如果將 level
索引鍵設定為 off
,文件不會根據 json-schema
進行驗證。
若要在您建立新集合時啟用 JSON Schema 驗證,請提供如上所述的 validation
JSON 物件。例如,若要建立一個集合,該集合保留經度和緯度值,並要求將這些值驗證為數字
var coll = schema.createCollection("longlang", {
validation: {
level: "strict",
schema: {
"id": "https://json-schema.dev.org.tw/geo",
"$schema": "https://json-schema.dev.org.tw/draft-06/schema#",
"description": "A geographical coordinate",
"type": "object",
"properties": {
"latitude": {
"type": "number"
},
"longitude": {
"type": "number"
}
},
"required": ["latitude", "longitude"]
}
}
})
您可以修改集合以控制文件的 JSON Schema 驗證。例如,您可以啟用或停用驗證,或變更用於驗證文件的 JSON Schema。
為了修改集合的 JSON Schema 驗證,請在呼叫 Collection.modify() 方法時,提供 validation
JSON 物件。例如,若要修改集合以停用 JSON Schema 驗證,validation
物件會是
{
validation: {
"level": "off"
}
}
當修改 JSON Schema 驗證時,您可以單獨提供 level
選項,僅變更 Schema 驗證的層級。例如,傳遞上方顯示的 JSON 物件以停用 JSON Schema 驗證。這不會變更先前指定的 JSON Schema,也不會從集合中移除 JSON Schema。或者,您也可以僅傳遞新的 JSON Schema 物件來修改 Schema。