3 votes

cts query to select only a field from json document in Marklogic staging (requête cts pour sélectionner uniquement un champ dans un document json dans Marklogic staging)

J'essaie d'écrire une requête javaScript cts pour interroger une clé d'un document json en fonction d'une autre clé. par exemple, similaire à une requête comme select name from data-hub-staging where source='source1'

{
    "source": "source1",
    "name": "John",
    "DOB": "1-01-1990",
    "load_date": "2021-10-23 10:23:55"
}

J'ai essayé la requête ci-dessous mais elle renvoie tous les champs, je voulais seulement le champ nom.

const query = cts.jsonPropertyValueQuery(
              "source",
              "source1");

cts.search(query)

1voto

Dave Cassel Points 856

L'objectif de la cts.search est de lancer une recherche qui renvoie des documents entiers. La recherche cts.jsonPropertyValueQuery identifie un critère de sélection d'un document. Une fois la recherche effectuée, vous pourrez extraire ce que vous voulez de ce document. Je pense que cela devrait suffire :

const query = cts.jsonPropertyValueQuery(
              "source",
              "source1");

cts.search(query)
  .toArray()
  .map(doc => doc.root.name)

Vous pouvez faire quelque chose de similaire avec l'API jSearch de MarkLogic :

import jsearch from '/MarkLogic/jsearch.mjs';
jsearch.documents()
  .where(jsearch.byExample({source: {$value: 'source1'}}))
  .map({extract: {paths: ['/name']}})
  .result()

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X