2016-01-19 27 views
0

基本上我是mongoDb和從文檔學習的新手。我想在MongoDb中定義集合時使用驗證器,validationLevel,validationAction。所以如果驗證數據沒有被插入或更新,我可能會出錯。我遵循this文件以供參考。然而,我在定義集合方面取得了成功,但是當我添加錯誤記錄時,它不會像文檔中提到的那樣給出錯誤。每當新記錄被插入時。你們可以幫我解決這個問題嗎?在Mongo中定義的集合中使用驗證器

我使用下面的命令來創建收集

db.createCollection("contacts", 
{ 
     validator: { $and: 
     [ 
      { phone: { $type: "string" } }, 
      { email: { $regex: /@mongodb\.com$/ } }, 
      { status: { $in: [ "Unknown", "Incomplete" ] } } 
     ], 
     validationAction: "error" 
     } 
    } 
) 

我也使用相同的validationLevel命令嚴格象下面,但它也沒有解決。我用來插入記錄

db.createCollection("contacts", 
{ 
     validator: { $and: 
     [ 
      { phone: { $type: "string" } }, 
      { email: { $regex: /@mongodb\.com$/ } }, 
      { status: { $in: [ "Unknown", "Incomplete" ] } } 
     ], 
     validationAction: "error", 
     validationLevel: "strict" 
     } 
    } 
) 

命令如下

db.contacts.insert({ name: "Amanda", status: "Updated" }) 

下面是一張原稿的預期輸出。

WriteResult({ 
    "nInserted" : 0, 
    "writeError" : { 
     "code" : 121, 
     "errmsg" : "Document failed validation" 
    } 
}) 

但我最終獲得成功輸出如下

WriteResult({ "nInserted" : 1 }) 

回答

0

我猜你驗證規則並不適用於集合。您可以使用 getCollectionInfos({name:'constacts'}) 檢查相同,這裏是link

+0

是的,它沒有被應用,但是當我們運行命令申請驗證它給人的成功。那麼可能是什麼原因? –

0

錯誤發生在validationActionvalidationLevel

使用本

db.createCollection("contacts", { validator: 
    { $and: 
     [ 
      { phone: { $type: "string" } }, 
      { email: { $regex: /@mongodb\.com$/ } }, 
      { status: { $in: [ "Unknown", "Incomplete" ] } } 
     ] 
    }, 
    validationLevel : "strict", 
    validationAction : "error" 
    } 
) 

insted的

db.createCollection("contacts", 
{ 
    validator: { $and: 
    [ 
     { phone: { $type: "string" } }, 
     { email: { $regex: /@mongodb\.com$/ } }, 
     { status: { $in: [ "Unknown", "Incomplete" ] } } 
    ], 
    validationAction: "error", 
    validationLevel: "strict" 
    } 
} 
) 
相關問題