首页 > 解决方案 > 如何使用 MongoDB-JAVA API 动态关闭模式验证

问题描述

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

ValidationOptions collOptions = new ValidationOptions();
collOptions.validator(sdoc);
collOptions.validationLevel(ValidationLevel.MODERATE);
collOptions.validationAction(ValidationAction.WARN);
srdmDatabase.createCollection(collectionName,new      CreateCollectionOptions().validationOptions(collOptions));

我的集合通过模式验证成功创建。

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

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

我们正在使用 MongoDB-4.0 和 mongo-java-driver-3.10.2。

提前致谢。

标签: mongodb

解决方案


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

对于更新

collection.updateOne(
                Filters.eq("_id", 1),
                Updates.set("name", "Fresh Breads and Tulips"),
                new UpdateOptions().upsert(true).bypassDocumentValidation(true));

同样对于插入,您可以使用InsertOptions.bypassDocumentValidation(true) 参考此链接获取更多信息https://docs.mongodb.com/manual/core/schema-validation/#bypass-document-validation


推荐阅读