mongodb - 如何使用 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。
提前致谢。
解决方案
您可以尝试使用以下代码绕过验证。
对于更新
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
推荐阅读
- javascript - 使用 UseState Hook 后反应组件不重新渲染
- reactjs - 如何导航到 App.js 中未声明的路径
- r - R:如何创建一个向量化函数,其中积分的上限是变量
- c - 如何防止二进制文件上的 LD_PRELOAD?
- java - 我如何处理请求中作为“@PathVariable”出现的“ñ”字符,Spring Boot
- javascript - 如何在 HTML 中创建一个多 y 轴图表,其中两个 Y 值都是用户输入?
- python - 在表格中打印文本,留下 n 行和列
- sql - 显示收入累积增加的列,然后仅在某个日期后重复最大值
- python - 浮动字符串列表
- c# - 如何在新选项卡中打开来自 Response MemoryStream 的 PDF