关于MarkLogic内存更新问题

时间:2018-05-23 16:07:51

标签: marklogic

我正在创建一个文档并在内存中更新它。但它不是更新文档,即不从创建的文档中删除“文件 - 文本”元素。下面是代码。 能否请你告诉我这里缺少的东西。

xquery version "1.0-ml";
declare namespace html = "http://www.w3.org/1999/xhtml";
import module namespace mem = "http://xqdev.com/in-mem-update" at   "/MarkLogic/appservices/utils/in-mem-update.xqy";

let $createArchDoc := xdmp:document-insert("/abc.xml",doc("/xyz.xml"))
let $createArchDoc := mem:node-delete($createArchDoc/document/file-text)
return $createArchDoc/document

我也试过

let $createArchDoc := xdmp:document-insert("/abc.xml",doc("/xyz.xml"))
let $myNewDoc := doc("/abc.xml")
let $myNewDoc := mem:node-delete($myNewDoc/document/file-text)
return $myNewDoc/document

1 个答案:

答案 0 :(得分:4)

in-mem-update库旨在用于尚未持久保存到数据库的结构。您必须先应用mem调用,然后保持。

此外,xdmp:document-insert会返回空序列,因此$createArchDoc在两种情况下都会为空。

您可能会寻找以下内容(未经测试):

xquery version "1.0-ml";

import module namespace mem = "http://xqdev.com/in-mem-update" at   "/MarkLogic/appservices/utils/in-mem-update.xqy";

let $createArchDoc := doc("/xyz.xml")
let $createArchDoc := mem:node-delete($createArchDoc/document/file-text)
let $_ := xdmp:document-insert("/abc.xml",$createArchDoc)
return $createArchDoc/document

HTH!