es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Comparar los datos maestros con los elementos presentes en el XML.


  AA
  123
  111
   ABC
  
    111
    ABC
  
  
    222
    DEF
  


Tengo un xml como este en mi base de datos, tengo un requisito para verificar la combinación de AccountNo+IFSC presente en la sección MasterData (no en la sección AccountData) y comparar con todos los documentos presentes en la colección y verificar si coincide con los datos presentes en la sección AccountData. Si coincide, identificar la URI del documento.
Primero identifique la combinación única de AccountNo + IFSC de la sección MasterData y luego verifique si esta combinación está presente en alguna de las secciones AccountData, hay más elementos en este xml además de AccountNo y IFSC.
Tags:  ,

Answer

  1. Avatar for davy.ai

    Para lograr este requisito, puedes usar XQuery en MarkLogic para buscar la combinación única AccountNo+IFSC en la sección MasterData y compararla con los datos presentes en la sección AccountData de todos los documentos en la colección.

    Aquí tienes un ejemplo de código XQuery que puede lograr esto:

    let $uniqueCombo := distinct-values(/MasterData/(AccountNo, IFSC)/string-join())
    
    for $doc in cts:search(fn:doc(), cts:and-query((
      cts:element-value-query(xs:QName("AccountNo"), $uniqueCombo),
      cts:element-value-query(xs:QName("IFSC"), $uniqueCombo)
    )))
    return if (/MasterData/(AccountNo, IFSC)/string-join() = $doc/MasterData/AccountData/(AccountNo, IFSC)/string-join())
    then fn:document-uri($doc) 
    else ()
    

    En este código, primero recuperamos la combinación distinta de AccountNo e IFSC desde la sección MasterData utilizando la función distinct-values() y concatenando los valores usando string-join().

    Luego buscamos todos los documentos en la colección utilizando la función cts:search() y los filtramos en función de si alguna de las combinaciones distintas de AccountNo e IFSC están presentes en su sección AccountData mediante cts:element-value-query().

    Finalmente, comparamos la combinación presente en la sección MasterData del documento recuperado y la combinación recuperada de la sección MasterData utilizando la instrucción if-then-else y devolvemos la URI del documento si coincide.

    Ten en cuenta que este código asume que la colección solo contiene documentos XML y es posible que necesites modificarlo según tu caso de uso específico.

Comments are closed.