У меня есть файл .json в MarkLogic как:
{
"contextProductIdCDM": {
"variables": {
"source": "'Inm'",
"source_table_id": "'123'",
"Referdate": "normalize-space(string-join((J_MCCC, if (J_MCDC eq '') then '000' else J_MCDC),''))"
},
"$ref": "#/contexts/Closure"
},
"predcondition": "xyz=1"
}
Я хочу удалить предварительное условие, а также хочу удалить часть исходных данных, также используя xquery. Может ли кто-нибудь помочь, как этого добиться?
Было бы полезно, если бы вы привели пример желаемых изменений, чтобы знать, что вы имеете в виду, когда говорите, что хотите удалить некоторую часть реферальных данных.
Если вы хотите удалить поле precondition
и изменить значение contextProductIdCDM.variables.Referdate
, вы можете обратиться к этим свойствам JSON с помощью XPath и использовать функции xdmp:node-delete()
и xdmp:node-replace()
:
xquery version "1.0-ml";
let $doc := fn:doc("/test.json")
return (
xdmp:node-replace($doc/contextProductIdCDM/variables/Referdate, text{ "000" }),
xdmp:node-delete($doc/predcondition)
)
Как это можно было сделать в JavaScript; преобразовать в простой старый объект, внести изменения, а затем заменить документ этим обновленным объектом JSON:
declareUpdate();
const doc = cts.doc("/test.json");
let obj = doc.toObject(); // create mutable representation
obj.contextProductIdCDM.variables.Referdate = '000'; //change the Referdate property value
delete obj.predcondition; // delete precondition field
xdmp.nodeReplace(doc, obj); // update the JSON document with the changes
Похоже, ваш JSON неполный или недействительный.