MongoDb 使用 .NET 驱动程序添加集合 jsonschema 验证
MongoDb with .NET driver add collection jsonschema validation
在使用 .NET 驱动程序在 mongodb 中创建集合时,有什么方法可以指定要验证的 json 模式吗?
我找到了有关如何使用代码设置验证器的文档,但没有找到有关如何使用 json 模式进行验证的文档。
我在使用 .NET 驱动程序时寻找模式验证的原因是使用代码指定验证有点冗长:
db.CreateCollectionAsync(
"Foos",
new CreateCollectionOptions<Foo>
{
Validator = FilterDefinitionBuilder<MongoCustomization>()
.And(
new FilterDefinitionBuilder<MongoCustomization>().Exists(c => c.Revision),
new FilterDefinitionBuilder<MongoCustomization>().Type(c => c.Revision, BsonType.Int32),
new FilterDefinitionBuilder<MongoCustomization>().Exists(c => c.CreatedBy)),
ValidationAction = DocumentValidationAction.Error,
ValidationLevel = DocumentValidationLevel.Strict
});
我认为最好的解决方案是创建一个 JavaScript 文件,然后 运行 它与 MongoDB 附带的 Mongo Shell。
这没有按要求使用 .NET 驱动程序,但我怀疑可以满足任何人的需求。
参见:Write scripts for the mongo shell
到 运行 来自 CMD 行的脚本:
> cd "C:\Program Files\MongoDB\Server.0\bin" <--- your mongo bin directory
> mongo path-to-script.js
晚了几年,但答案是使用 FilterDefinitionBuilder class 的 JsonSchema 方法。像这样:
db.CreateCollectionAsync(
"Foos",
new CreateCollectionOptions<Foo>
{
Validator = new FilterDefinitionBuilder<Foo>().JsonSchema(BsonDocument.Parse("your JSON goes here")),
ValidationAction = DocumentValidationAction.Error,
ValidationLevel = DocumentValidationLevel.Strict
});
在使用 .NET 驱动程序在 mongodb 中创建集合时,有什么方法可以指定要验证的 json 模式吗?
我找到了有关如何使用代码设置验证器的文档,但没有找到有关如何使用 json 模式进行验证的文档。
我在使用 .NET 驱动程序时寻找模式验证的原因是使用代码指定验证有点冗长:
db.CreateCollectionAsync(
"Foos",
new CreateCollectionOptions<Foo>
{
Validator = FilterDefinitionBuilder<MongoCustomization>()
.And(
new FilterDefinitionBuilder<MongoCustomization>().Exists(c => c.Revision),
new FilterDefinitionBuilder<MongoCustomization>().Type(c => c.Revision, BsonType.Int32),
new FilterDefinitionBuilder<MongoCustomization>().Exists(c => c.CreatedBy)),
ValidationAction = DocumentValidationAction.Error,
ValidationLevel = DocumentValidationLevel.Strict
});
我认为最好的解决方案是创建一个 JavaScript 文件,然后 运行 它与 MongoDB 附带的 Mongo Shell。
这没有按要求使用 .NET 驱动程序,但我怀疑可以满足任何人的需求。
参见:Write scripts for the mongo shell
到 运行 来自 CMD 行的脚本:
> cd "C:\Program Files\MongoDB\Server.0\bin" <--- your mongo bin directory
> mongo path-to-script.js
晚了几年,但答案是使用 FilterDefinitionBuilder class 的 JsonSchema 方法。像这样:
db.CreateCollectionAsync(
"Foos",
new CreateCollectionOptions<Foo>
{
Validator = new FilterDefinitionBuilder<Foo>().JsonSchema(BsonDocument.Parse("your JSON goes here")),
ValidationAction = DocumentValidationAction.Error,
ValidationLevel = DocumentValidationLevel.Strict
});