官术网_书友最值得收藏!

  • Mastering MongoDB 3.x
  • Alex Giamas
  • 253字
  • 2021-08-20 10:10:55

collMod

collMod is used to pass flags to a collection modifying the underlying database's behavior.

Since version 3.2, the most interesting set of flags that we can pass to a collection is document validation.

Document validation can specify a set of rules to be applied to new updates and inserts into a collection. This means that current documents will get checked if they get modified.

We can only apply validations to documents that are already valid if we set validationLevel to moderate. By specifying validationAction we can log documents that are invalid by setting it to warn or prevent updates from happening altogether by setting it to error.

For example, with the previous example of BookOrders we can set a validator on the isbn and name fields being present for every insert or update like this:

> db.runCommand( { collMod: "bookOrders",
"validator" : {
"$and" : [
{
"isbn" : {
"$exists" : true
}
},
{
"name" : {
"$exists" : true
}
}
]
}
})

Here, we get back:

{ "ok" : 1 }

Then if we try to insert a new document with only the isbn field being present, we get an error:

> db.bookOrders.insert({isbn: 102})
WriteResult({
"nInserted" : 0,
"writeError" : {
"code" : 121,
"errmsg" : "Document failed validation"
}
})
>

We get an error because our validation failed. Managing validation from the shell is really useful as we can write scripts to manage them and also make sure that everything is in place.

主站蜘蛛池模板: 五寨县| 奉新县| 南江县| 临澧县| 喀喇沁旗| 永济市| 陆良县| 邵武市| 定边县| 邻水| 历史| 若尔盖县| 且末县| 饶阳县| 贵溪市| 龙山县| 南投县| 资兴市| 荔浦县| 介休市| 平利县| 嘉黎县| 乌拉特后旗| 利辛县| 巴林左旗| 兴海县| 都昌县| 伊通| 临朐县| 杂多县| 德化县| 广水市| 襄城县| 三原县| 怀仁县| 阜城县| 海淀区| 合江县| 桂林市| 凤阳县| 五大连池市|