Mongodb

如何確定 MongoDB 文件驗證失敗的原因?

  • July 13, 2018

如何確定 MongoDB 文件插入驗證失敗的原因?我得到的只是一個 writeError,上面寫著“文件驗證失敗”,這不是很有幫助。

(這種情況經常發生,我想了解如何正確調試這些,而不是尋求特定範例的幫助。)

在 MongoDB 3.2 中,沒有關於文件驗證失敗原因的回饋:整體驗證表達式目前評估為 True(“OK”)或 False(“文件驗證失敗”)。validationAction可以使用(error/warn) 和(strict/moderate/off) 配置選項調整驗證行為validationLevel,但這不會為驗證失敗提供任何進一步的上下文。

如果您想獲得更詳細的回饋,推薦的方法是將驗證邏輯添加到您的應用程序中,而不是僅僅依賴伺服器端檢查。即使使用伺服器端驗證,最好在應用程序業務邏輯中完成許多檢查,以盡量減少到數據庫伺服器的往返行程,並為最終使用者提供更具響應性的回饋。

例如,Web 應用程序的使用者輸入(必填欄位、欄位格式等)應在瀏覽器中驗證,然後再送出到您的應用程序或嘗試在數據庫中插入/更新。

但是,在多個級別進行驗證以確保數據質量確實很有意義,並且診斷驗證失敗的一些上下文將非常有用。您可以在 MongoDB 問題跟踪器中觀看/投票支持相關的開放功能請求:SERVER-20547: Expose the reason an operation failed document validation

有關更多資訊,您可能還對文件驗證 - 第 1 部分:對您的文件添加適量的控制感興趣。這突出了 MongoDB 3.2 中文件驗證的一些一般優點和缺點,並包括基於validationActionvalidationLevel配置選項的結果參考表。

引用自:https://dba.stackexchange.com/questions/147550