Marklogic 向使用对象节点构造函数创建的JSON添加新的键值对

Marklogic 向使用对象节点构造函数创建的JSON添加新的键值对,marklogic,marklogic-8,Marklogic,Marklogic 8,我想向使用对象节点构造函数创建的JSON添加一个新的键值对 对象节点: object-node { "status": "success", "categories": "cat" } 插入新对的XQuery代码: let $outputJson := object-node { "status": "success",

我想向使用对象节点构造函数创建的JSON添加一个新的键值对

对象节点:

object-node {
     "status": "success",
     "categories": "cat"
  }
插入新对的XQuery代码:

let $outputJson :=
      object-node {
        "status": "success",
        "categories": "cat"
      }
return ( map:put($outputJson, "str", "xyz"), $outputJson )

上述表达式失败。有没有办法插入新的一对?

令人恼火的是,
对象-节点()
无法按预期进行操作,但
对象-节点()
是不可变的

而是使用,它将提供一个专门的可变映射:

let $outputJson :=
      json:object() 
      => map:with("status", "success") 
      => map:with("categories", "cat")
      
return ( map:put($outputJson, 'str', 'xyz'), $outputJson )

在动态构建json文档时,从json:object开始可能更有意义,但如果需要从数据库中提取json并对其进行操作,这可能是一个有用的技巧:

let $outputJson :=
      object-node {
        "status": "success",
        "categories": "cat"
      }
return xdmp:to-json(map:with(xdmp:from-json($outputJson), "str", "xyz"))

是的,很烦人。如果它得到支持,那会很酷。无论如何,谢谢你的回复。而且,我知道可以使用json:object(),我之所以这样做是因为对象节点方式不起作用。