Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MongoDB

MongoDB: ตรวจสอบข้อมูลก่อน Insert/Update ด้วย Schema Validation

ใช้ validator option ใน createCollection() เพื่อกำหนด validation rules สำหรับเอกสาร สร้างคอลเลกชันพร้อม validation:

> db.createCollection("demo356", {validator: {
  $and: [ {"FirstName": {$type: "string", $exists: true}} ]
}})
{ "ok" : 1 }

ลองเพิ่มข้อมูลที่ถูกต้อง (string):

> db.demo356.insertOne({"FirstName":"Chris"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e568d49f8647eb59e5620c7") }

ลองเพิ่มข้อมูลที่ผิด (number):

> db.demo356.insertOne({"FirstName":909});
WriteError: Document failed validation

แสดงข้อมูลที่บันทึกสำเร็จ:

> db.demo356.find();

ผลลัพธ์ (มีแค่ Chris):

{ "_id" : ObjectId("5e568d49f8647eb59e5620c7"), "FirstName" : "Chris" }

Validation Options

  • validationLevel: strict (default, validate ทุก insert/update), moderate (validate เฉพาะเอกสารที่มีอยู่แล้วและ update)
  • validationAction: error (default, reject), warn (log warning แต่ allow)
  • ใช้ JSON Schema (MongoDB 3.6+): {$jsonSchema: {bsonType: "object", required: ["FirstName"], properties: {FirstName: {bsonType: "string"}}}}
  • ดู validation: db.getCollectionInfos({name: "demo356"})