使用.NET驱动程序添加MongoDb集合JSON模式验证

4

在使用.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
   });
2个回答

4
几年过去了,但是解决方法是使用FilterDefinitionBuilder类的JsonSchema方法。像这样:
    db.CreateCollectionAsync(
       "Foos",
       new CreateCollectionOptions<Foo>
       {
           Validator = new FilterDefinitionBuilder<Foo>().JsonSchema(BsonDocument.Parse("your JSON goes here")),
           ValidationAction = DocumentValidationAction.Error,
           ValidationLevel = DocumentValidationLevel.Strict
       });

嗯,自2019年以来我就没有再使用MongoDb了...但当然要为试图减少SO上未回答问题的数量加一。我正在寻找一种“.NET流畅方式”来添加验证,但是,与.NET API中的其他几个事物一样,您只能诉诸于bson文档。 - mortb

0
我认为最好的解决方案是创建一个JavaScript文件,然后使用随MongoDB一起提供的Mongo Shell运行它。
这不使用所请求的.NET驱动程序,但我怀疑它可以满足任何人的需求。
请参见:编写mongo shell脚本 要从CMD行运行脚本:
> cd "C:\Program Files\MongoDB\Server\4.0\bin"     <--- your mongo bin directory
> mongo path-to-script.js

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接