如何使用MongoDB JAVA API动态关闭模式验证

如何使用MongoDB JAVA API动态关闭模式验证,mongodb,Mongodb,我创建了一个具有模式验证的集合,如下所示 ValidationOptions collOptions = new ValidationOptions(); collOptions.validator(sdoc); collOptions.validationLevel(ValidationLevel.MODERATE); collOptions.validationAction(ValidationAction.WARN); srdmDatabase.createCollection(colle

我创建了一个具有模式验证的集合,如下所示

ValidationOptions collOptions = new ValidationOptions();
collOptions.validator(sdoc);
collOptions.validationLevel(ValidationLevel.MODERATE);
collOptions.validationAction(ValidationAction.WARN);
srdmDatabase.createCollection(collectionName,new      CreateCollectionOptions().validationOptions(collOptions));
已通过架构验证成功创建我的集合

在某些情况下,我希望动态关闭验证检查

我发现monogdb java驱动程序中有一个关闭验证(ValidationLevel.OFF)的选项,但我不知道如何使用这个选项。 请帮助我了解如何以编程方式关闭验证检查

我们使用的是MongoDB-4.0和mongo-java-driver-3.10.2


提前感谢。

您可以尝试使用以下代码绕过验证

更新

collection.updateOne(
                Filters.eq("_id", 1),
                Updates.set("name", "Fresh Breads and Tulips"),
                new UpdateOptions().upsert(true).bypassDocumentValidation(true));
与插入类似,您可以使用
InsertOptions.bypassDocumentValidation(true)

有关更多信息,请参阅此链接

用例是什么?您可以绕过某些操作上的验证,并且可以将其设置为“验证失败时发出警告”而不是“拒绝”。感谢您的回复。在我的例子中,我不想为导入操作验证db,在这种情况下,我想关闭验证(ValidationLevel.OFF)。验证会增加相当小的开销,因此除非您希望导入无效文档,否则可以保持打开状态以确保数据完整性。否则,
mongoimport--bypassDocumentValidation
或Java驱动程序(应用于大型写入)具有
setBypassDocumentValidation
参数。