xquery - 删除所有符合查询条件的文档?

标签 xquery marklogic

我想删除所有与某些谓词匹配的文档。我提出的查询如下,但是没有从数据库中删除任何内容。

我怀疑这是因为$ doc设置为文档的XML值,而不是文档本身。谁能对此有所启示?

xquery version "1.0-ml";
for $doc in cts:search(fn:collection("MYCOLLECTIONNAME")/MyDocumentRoot,
    cts:or-query((
    cts:element-range-query (xs:QName("MyElement"), "=", "MyElementValue"),
    )), "unfiltered" )
    return xdmp:document-delete($doc);

该文件看起来像
<MyDocumentRoot>
  <MyElementName>MyElementValue</MyElementName>
</MyDocumentRoot>

最佳答案

您确实是将文档的内容传递到xdmp:document-delete而不是其uri中。您可以使用fn:base-uri()来获取uri,但是像这样,您要删除的所有文档都会首先从数据库中检索出来,这是不必要的。

而是启用URI词典,并使用cts:uris进行删除。批量删除1000个文档也可能是明智的选择。

HTH!

关于xquery - 删除所有符合查询条件的文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11452911/

相关文章:

xquery - MarkLogic XQuery - 如果我有文档的 URI,如何返回该文档?

xml - 使用通配符的 XPath-Query 不起作用

marklogic - 关闭引导主机导致 Marklogic 中整个集群宕机

marklogic - 从 MarkLogic 中的 xquery 模块调用 Shell 脚本

xml - Schematron验证多个元素

xml - 在 SQL Server 2008 中使用 XQuery 搜索内容

sql-server - XPath fn :data in sql server causes Type conversion in expression may affect "CardinalityEstimate" in query plan choice

xquery - 如果我不在 Corb 中指定集合名称会发生​​什么

maven - 无法使用 DMSDK(数据移动 SDK)和 maven pom.xml 构建应用程序

marklogic - 有没有一种方法可以搜索一个路径范围索引等于另一个的文档?