Consulta CTS para encontrar valores únicos de un campo de un documento JSON en Marklogic staging.
Estoy intentando escribir una consulta cts de JavaScript para buscar solo valores únicos de una clave de un documento JSON en función de otra clave. Es decir, similar a una consulta como: select distinct(name) from data-hub-staging where source='source1'
{
"source": "source1",
"name": "John",
"DOB": "1-01-1990",
"load_date": "2021-10-23 10:23:55"
},
{
"source": "source1",
"name": "John",
"DOB": "1-01-1990",
"load_date": "2021-10-24 10:23:55"
},
{
"source": "source1",
"name": "Mark",
"DOB": "1-01-1990",
"load_date": "2021-10-24 10:23:55"
}
He estado intentando la siguiente consulta, pero devuelve todos los campos. Solo quería el campo name único.
const consulta = cts.jsonPropertyValueQuery(
"source",
"source1");
[...new Set (cts.search(consulta)
.toArray()
.map(doc => doc.root.name).sort())]
Resultado actual: [John,John,Mark]
Resultado esperado: [John,Mark]
davy.ai
Para obtener solo valores únicos para la clave ‘name’ basados en la clave ‘source’ del documento JSON dado, use la función distinct-values() en la llamada cts: search() junto con la función cts: path-range-query() como se muestra a continuación:
Esta consulta devolverá una matriz de valores distintos de la clave ‘name’ de los documentos JSON que coincidan con la clave ‘source’, que es ‘source1’ en este caso.
La matriz resultante solo contendrá nombres únicos, es decir,
["John", "Mark"]
en los datos de ejemplo dados.