最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

marklogic - XDMP-CONFLICTINGUPDATES - deleting multiple node in a document - Stack Overflow

programmeradmin2浏览0评论
let $prop_name := "Melting"
let $prop_val := "164"
let $property := fn:doc('test.xml')//*:propertyset[@prop_src[. != 'P']]//*:property[@prop_name=$prop_name]//*:value[. = $prop_val] 
return
(for $node in $property 
let $prop_node := $node/../../../.. 
let $property_set := $prop_node/.. 
let $property_count :=  fn:count(($property_set)//*:property) 
return 
(if($property_count = 1) then () 
else 
 (for $node in $prop_node return xdmp:node-delete($node))))

The above code is giving the below error XDMP-CONFLICTINGUPDATES: xdmp:eval(" let $key := "50000" let $prop_name := "D...", (), 18234865419863656389...) -- Conflicting updates xdmp:node-delete(fn:doc("test.xml")/:physprop/:propertyset[207]/:property[1]) and xdmp:node-delete(fn:doc("test.xml")/:physprop/:propertyset[207]/:property[1])

Please help me resolve the same, while deleting the nodes

let $prop_name := "Melting"
let $prop_val := "164"
let $property := fn:doc('test.xml')//*:propertyset[@prop_src[. != 'P']]//*:property[@prop_name=$prop_name]//*:value[. = $prop_val] 
return
(for $node in $property 
let $prop_node := $node/../../../.. 
let $property_set := $prop_node/.. 
let $property_count :=  fn:count(($property_set)//*:property) 
return 
(if($property_count = 1) then () 
else 
 (for $node in $prop_node return xdmp:node-delete($node))))

The above code is giving the below error XDMP-CONFLICTINGUPDATES: xdmp:eval(" let $key := "50000" let $prop_name := "D...", (), 18234865419863656389...) -- Conflicting updates xdmp:node-delete(fn:doc("test.xml")/:physprop/:propertyset[207]/:property[1]) and xdmp:node-delete(fn:doc("test.xml")/:physprop/:propertyset[207]/:property[1])

Please help me resolve the same, while deleting the nodes

Share asked Feb 10 at 12:47 Pragya KapoorPragya Kapoor 1316 bronze badges 2
  • this is resolved using the below code xquery version "0.9-ml" let $property := fn:doc('test.xml')//*:propertyset[@prop_src[. != 'P']]//*:property[@prop_name=$prop_name]//*:value_base[. = $prop_val] let $prop_nodes := fn:distinct-nodes($property/../../../..) let $nodes_to_delete := (for $prop_node in $prop_nodes let $property_set := $prop_node/.. let $property_count := fn:count(($property_set)//*:property) return (if($property_count = 1) then 'true' else $prop_node)) return if($nodes_to_delete) then xdmp:node-delete(fn:distinct-nodes($nodes_to_delete)) else () – Pragya Kapoor Commented Feb 11 at 14:57
  • If this solves your issue and avoids attempting to delete the same node in the same transaction, then you should post this as an answer (and select it as the answer), instead of a comment. By the way, 0.9-ml is deprecated docs.progress/bundle/marklogic-server-whats-new-11/page/… – Mads Hansen Commented Feb 11 at 19:28
Add a comment  | 

1 Answer 1

Reset to default 0

this is resolved using the below code

xquery version "0.9-ml" let $property := fn:doc('test.xml')//*:propertyset[@prop_src[. != 'P']]//*:property[@prop_name=$prop_name]//*:value_base[. = $prop_val] let $prop_nodes := fn:distinct-nodes($property/../../../..) let $nodes_to_delete := (for $prop_node in $prop_nodes let $property_set := $prop_node/.. let $property_count := fn:count(($property_set)//*:property) return (if($property_count = 1) then 'true' else $prop_node)) return if($nodes_to_delete) then xdmp:node-delete(fn:distinct-nodes($nodes_to_delete)) else ()

发布评论

评论列表(0)

  1. 暂无评论