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
       });