我想删除所有与某些谓词匹配的文档。我提出的查询如下,但是没有从数据库中删除任何内容。
我怀疑这是因为$ 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/