2013-02-14 40 views
4

我正在尋找方法來驗證插入到MongoDB中的數據是否與模式匹配,例如,具有所有必需的字段和正確的數據類型。我知道Mongo本身是無模式的,但是如果我能夠在將應用程序級別的數據傳遞給Mongo驅動程序之前對其進行驗證,那會很好。在MongoDB中執行模式驗證

我看了JSON模式。我最大的猶豫是,我只能找到一個用於模式驗證的Java庫,並且我不知道我是否應該信任它,我更喜歡由Apache或Google支持的庫。我也看過Apache Thrift,Avro和協議緩衝區,它們並不是專門的驗證框架,但它們每個都有一個模式的概念。如果有一種方法可以從其中一個執行驗證,我會感興趣。

有什麼建議嗎?或者我應該接受Mongo的無模式,甚至不想試圖驗證數據?

+1

並非所有的事情都是由apache基金會或谷歌製作的,也就是說Facebook也製作了一些東西。不,你應該驗證數據,一種常見的方法是使用活動記錄模型來驗證一組定義的屬性 – Sammaye 2013-02-14 15:09:14

+2

謝謝,我可能應該澄清我關於Apache和Google的聲明,以免過於勢利。我喜歡選擇那些在開發人員或社區有強大支持記錄的項目。因此,不管這是Apache還是位於地下室的單個開發人員,只要我有信心,如果在圖書館五年後發現錯誤,我就會找到一條修復問題的好路徑。 – PatTheWolf 2013-02-14 15:32:51

+0

是的,我明白你的意思:)它是一個始終是軟件封閉或開放源代碼的問題,因爲我發現 – Sammaye 2013-02-14 15:35:24

回答

5

在即將到來的Mongo 3.2版本他們增加了document validationslides)。

您可以爲每個集合指定驗證規則,使用幾乎所有的Mongo的查詢操作使用validator選項(除$geoNear$near$nearSphere$text$where)。你可以在我的answers中閱讀更多關於它的信息。

+0

但根據我的理解,MongoDB中的文檔驗證不是針對模式(XSD或JSON模式) 。 – 2016-08-26 17:53:24

3

不知道你是否還在尋找,但一個對象文檔映射器(ODM)會做的伎倆。

我已經簽出了MorphiaSpring Data - MongoDB,並且會考慮到您的類型安全問題,因爲它們會將您的文檔直接映射到Java類。