Начиная с MongoDB 3.2 они добавили проверка документов ( слайды ).
Вы можете указать правила проверки для каждой коллекции, используя опцию validator , используя почти все операторы запроса монго (кроме $geoNear
, $near
, $nearSphere
, $text
и $where
) .
Чтобы создать новую коллекцию с помощью валидатора, используйте:
db.createCollection("your_coll", {
validator: { `your validation query` }
})
Чтобы добавить валидатор в существующую коллекцию, вы можете добавить валидатор:
db.createCollection("your_coll", {
validator: { `your validation query` }
})
Проверка работает только при вставке / обновлении, поэтому при создании средства проверки в старой коллекции предыдущие данные проверяться не будут (вы можете написать проверку на уровне приложения для предыдущих данных). Вы также можете указать validationLevel и validationAction , чтобы сообщить, что произойдет, если документ не пройдет проверку.
Если вы попытаетесь вставить / обновить документ с чем-то, что не проходит проверку (и не указал какой-либо странный validationLevel / action), то вы получите ошибку на writeResult
(к сожалению, ошибка не говорит вам, что не удалось, и вы получите только значение по умолчанию validation failed
):
WriteResult({
"nInserted" : 0,
"writeError" : {
"code" : 121,
"errmsg" : "Document failed validation"
}
})