Nosql 如何使用xdmp:node insert在Marklogic的JSON文档中插入节点

Nosql 如何使用xdmp:node insert在Marklogic的JSON文档中插入节点,nosql,marklogic,marklogic-9,Nosql,Marklogic,Marklogic 9,我想在JSON文档中插入节点,如下所示: { “文件名”:“l”, “用户id”:“测试”, “请求ID”:“1232”, “反馈类型”:“cpd_mah” } 运行此代码: let $old := $doc/filename return xdmp:node-insert-after($old, object-node{"isSaved": ""}) 但是这会引发一个错误XDMP-childunameJSON属性没有同级的概念,就像XML元素那样

我想在JSON文档中插入节点,如下所示:

{ “文件名”:“l”, “用户id”:“测试”, “请求ID”:“1232”, “反馈类型”:“cpd_mah” }

运行此代码:

let $old := $doc/filename
return
  xdmp:node-insert-after($old, object-node{"isSaved": ""})

但是这会引发一个错误XDMP-childuname

JSON属性没有同级的概念,就像XML元素那样

JSON对象基本上是一个具有一组属性的映射。因此,您希望插入JSON文档
object-node()

MarkLogic文档中的几个在XQuery中使用JSON的示例:
我同意Mads的观点,使用节点插入子节点对JSON更有意义。不过,您可以在之后使用节点插入。您的尝试引发了
XDMP-CHILDUNNAMED
错误,因为您传入的是未命名对象节点(基本上是其属性的匿名包装器),而不是要插入的命名属性。Mads代码向您展示了如何使其工作:

let $old := doc("/test.json")/filename
return
  xdmp:node-insert-after($old, object-node{"isSaved": ""}/isSaved)
注意:如果您多次运行它,它将替换而不是插入,因为属性应该是唯一的

let $old := doc("/test.json")/filename
return
  xdmp:node-insert-after($old, object-node{"isSaved": ""}/isSaved)