首頁 >web前端 >js教程 >JSON模式驗證和表達查詢語法3.6

JSON模式驗證和表達查詢語法3.6

William Shakespeare
William Shakespeare原創
2025-02-15 12:52:11550瀏覽

JSON Schema Validation & Expressive Query Syntax in MongoDB 3.6

MongoDB 3.6 的關鍵改進:JSON Schema 驗證與高效查詢語法

MongoDB 3.6 通過引入 JSON Schema 驗證,顯著增強了數據完整性和控制能力。與之前的文檔驗證相比,JSON Schema 驗證更加強大靈活,支持在數組內部強制執行模式,並限制未經授權的屬性。

JSON Schema 驗證的核心優勢:

  • 使用 $jsonSchema 運算符: 允許對屬性進行詳細規範,例如類型、必填狀態和附加屬性,從而防止插入拼寫錯誤或未經授權的屬性的文檔。
  • 支持複雜結構: 例如,可以確保訂單中的 lineitems 數組包含必需字段,並遵守指定的數據類型和約束。
  • 結合高效查詢語法: 將大量業務邏輯從應用程序層轉移到數據庫層,簡化代碼庫,減少數據處理中的錯誤和不一致性。 高效的查詢語法將聚合表達式的強大功能引入查詢語言,方便進行複雜的業務驗證規則和動態數據檢查。

從文檔驗證遷移到 JSON Schema 驗證

以下示例展示瞭如何將文檔驗證升級為 JSON Schema 驗證:

首先,創建一個 orders 集合,並使用文檔驗證配置:

<code class="language-javascript">db.createCollection("orders", {
  validator: {
    item: { $type: "string" },
    price: { $type: "decimal" }
  }
});</code>

這確保 item 是字符串,price 是十進制數。然而,它無法阻止添加拼寫錯誤或未授權的屬性。

使用 $jsonSchema 運算符可以解決這個問題:

<code class="language-javascript">db.runCommand({
  collMod: "orders",
  validator: {
    $jsonSchema: {
      bsonType: "object",
      required: ["item", "price"],
      properties: {
        item: { bsonType: "string" },
        price: { bsonType: "decimal" }
      }
    }
  }
});</code>

通過 additionalProperties: false 可以進一步增強安全性,防止添加未定義的屬性。

處理複雜數據結構 (例如:lineitems 數組)

JSON Schema 驗證允許對文檔內的複雜結構進行驗證,例如確保 lineitems 數組中的每個元素都包含必需字段並符合指定的數據類型和約束。 示例如下:

<code class="language-javascript">// ... (省略部分代码,与原文类似) ...
lineitems: {
    bsonType: ["array"],
    minItems: 1,
    maxItems: 10,
    items: {
        required: ["unit_price", "sku", "quantity"],
        bsonType: "object",
        additionalProperties: false,
        // ... (省略部分代码,与原文类似) ...
    }
}
// ... (省略部分代码,与原文类似) ...</code>

利用高效查詢語法進行更複雜的業務規則驗證

高效的查詢語法允許使用 $expr 運算符來創建動態驗證規則,例如驗證 totalWithVAT 是否等於 total * (1 VAT)

<code class="language-javascript">$expr: {
    $eq: [
        "$totalWithVAT",
        { $multiply: ["$total", { $sum: [1, "$VAT"] }] }
    ]
}</code>

通過結合 $jsonSchema$expr,可以將復雜的業務邏輯規則集成到數據庫驗證中,提高數據準確性和一致性。

總結

MongoDB 3.6 的 JSON Schema 驗證和高效查詢語法為開發者提供了更強大的數據完整性和控制能力,同時簡化了應用程序代碼,減少了錯誤,並提高了數據處理效率。 這使得 MongoDB 更加適合處理大型、複雜的應用程序和數據。

以上是JSON模式驗證和表達查詢語法3.6的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn