我有一个XML数据库,其中包含具有id的元素。这些都是独一无二的。它们还有一个辅助标识符,用于将它们链接到另一个数据库中的类似对象。这些都不是唯一的。
是否有一个XQuery可以让我识别所有非唯一ID?我可以计算有多少使用distinct-values(),但这无助于识别具有重复项的ID!
示例XML :(每个对象都包含在eXist数据库的单独文件中)
<object id="uniqueID123">
<secondary identifier="nonUnique888"/>
</object>
<object id="uniqueID456">
<secondary identifier="nonUnique888"/>
</object>
<object id="uniqueID789">
<secondary identifier="Unique999"/>
</object>
我想识别重复的字符串“nonUnique888”。
答案 0 :(得分:3)
以下查询返回所有非唯一标识符:
let $sec := doc('source')/root/object/secondary
for $id in distinct-values($sec/@identifier)
where count($sec[@identifier eq $id]) gt 1
return $id
答案 1 :(得分:2)
答案 2 :(得分:0)
在xml文件中使用此代码存储
let $path:="/db/test/all.xml"
let $a := xmldb:store( $col,'adub.xml',<root></root>)
let $sec := doc($path)//profile
for $id in distinct-values($sec/mail)
where count($sec[mail eq $id]) gt 1
return
update insert
<profile>
{$id}
</profile>
into doc($a)/root