Mongodb
如何根據 jsonSchema 驗證器查找所有無效文件?
MongoDB 3.6 中的新特性之一是 jsonSchema 驗證器。我可以使用驗證器創建一個集合,例如:
{ "validator": { "$jsonSchema": { "properties": { "name": { "bsonType": "string", "description": "name" }, "age": { "bsonType": "int", "minimum": 10, "maximum": 30 } }, "required": ["name", "age"], "bsonType": "object" } } }
但是,如果該集合已經存在一些文件,而這些文件不能滿足驗證模式呢?如何根據驗證器找出所有無效文件?
您可以使用
$jsonSchema
查詢運算符來查找相關文件。例如,使用
mongo
外殼:// Retrieve the current validator for the "students" collection var schema = db.getCollectionInfos({ name: "students" })[0].options.validator // Find any documents not matching the schema db.students.find({ $nor: [schema] })
同樣,您可以在
$jsonSchema
為集合添加或更新驗證器之前使用查詢運算符來確認預期匹配:var schema = { $jsonSchema: { properties: { name: { bsonType: "string", description: "name", }, }, required: ["name"], bsonType: "object", }, } // Find documents matching schema db.students.find(schema)