Marklogic 清除集合在Java API中不起作用
我们使用的是MarkLogicv10和JavaAPIv4.1.0。 我们的要求是清除特定文件中的集合 我们使用下面的代码片段清除所有集合Marklogic 清除集合在Java API中不起作用,marklogic,marklogic-9,Marklogic,Marklogic 9,我们使用的是MarkLogicv10和JavaAPIv4.1.0。 我们的要求是清除特定文件中的集合 我们使用下面的代码片段清除所有集合 XMLDocumentManager xmlDocumentManager = client.newXMLDocumentManager(); DocumentMetadataHandle metadataHandle = new DocumentMetadataHandle(); xmlDocumentManager.readMetadata("
XMLDocumentManager xmlDocumentManager = client.newXMLDocumentManager();
DocumentMetadataHandle metadataHandle = new DocumentMetadataHandle();
xmlDocumentManager.readMetadata("/test/inventory", metadataHandle);
DOMHandle domHandle = new DOMHandle();
xmlDocumentManager.read("/test/inventory", domHandle);
metadataHandle.getCollections().clear();
xmlDocumentManager.write("/test/inventory", metadataHandle, domHandle);
在运行上述代码段之后,它应该从文档中删除所有集合,但不会发生
请帮助我完成这项工作。复制错误的解决方案,以防对其他人有用 Clear collections仅在REST API的Java API客户端中本地清除内存中的
DocumentMetadataHandle
Java API调用的REST API的行为取决于REST API服务器更新策略的配置:
为客户端未发送的任何元数据类别保留现有文档的当前元数据MERGE\u METADATA
忽略现有文档的当前元数据OVERWRITE\u METADATA
ServerConfigurationManager configMgr = client.newServerConfigManager();
configMgr.readConfiguration();
configMgr.setUpdatePolicy(ServerConfigurationManager.UpdatePolicy.OVERWRITE_METADATA);
configMgr.writeConfiguration();
注意
- 服务器配置将保持有效,直到更改。通常,设置后,配置不会更改
- 在MarkLogic server的最新版本中,默认更新策略从
更改为MERGE\u METADATA
OVERWRITE\u METADATA
感谢Shivling深入研究这个问题。根据我对的阅读,这似乎是一个bug。你能打开一个漏洞吗?你上面的例子就足够了。