Cómo identificar registros únicos coincidentes en MarkLogic
Tengo un millón de documentos XML como este en mi base de datos de preparación de MarkLogic.
<details>
<name>AA</name>
<empid>123</empid>
<account>
<accountno>111</accountno>
<ifsc>ABC</ifsc>
</account>
<account>
<accountno>222</accountno>
<ifsc>DEF</ifsc>
</account>
</details>
En este XML, un empleado tiene múltiples números de cuenta. A partir de esto, quiero identificar si algún empleado tiene el mismo número de cuenta. Encontrar el número de cuenta único en los 1 millón de documentos y luego comprobar si el número de cuenta coincide con múltiples identificaciones de empleados.
¿Cómo puedo lograr esto?
davy.ai
Para lograr esto, puedes utilizar xquery en MarkLogic para extraer los números de cuenta únicos de todos los documentos XML y luego utilizar la agrupación para identificar cualquier número de cuenta duplicado entre múltiples empleados.
Aquí tienes un código de ejemplo en xquery que puedes utilizar:
Este código primero extraerá todos los números de cuenta únicos de todos los documentos XML utilizando la función
distinct-values()
. Luego iterará sobre cada número de cuenta único y utilizará un predicado para filtrar solo aquellos empleados que tengan este número de cuenta. Finalmente, agrupará a los empleados por número de cuenta y contará las ocurrencias. Si el recuento es mayor que 1, significa que hay múltiples empleados con el mismo número de cuenta, y se devolverá el elementoResult
con el número de cuenta, los IDs de empleados y el recuento.