Как написать функции поиска Java-сценария в marklogic? - PullRequest
0 голосов
/ 02 января 2019

В моей базе данных три документа json с их уникальными URI.

/ сотрудник / 100.json

{
  "id": "100", 
  "name": "niranjan", 
  "status": "unprocessed"
}

/ домен / 100.json

{
  "id": "100", 
  "domain": "java"
}

/ зарплата / 100.json

{
  "id": "100", 
  "salary": "3000"
}

Теперь я должен написать функции поиска javascript для извлечения деталей из соответствующих документов на основе «id» из /employee/100.json.

.

Вывод должен выглядеть следующим образом:

/ Окончательный / 100.json

{
  "id": "100", 
  "name": "niranjan", 
  "domain": "java",
  "salary": "3000"
}

Как это сделать ??

1 Ответ

0 голосов
/ 02 января 2019

Один из подходов - использовать запрос, подобный следующему, для получения трех документов:

cts.search(cts.andQuery([
    cts.jsonPropertyValueQuery("id", "100"),
    cts.orQuery([
        cts.jsonPropertyScopeQuery("name",   cts.trueQuery()),
        cts.jsonPropertyScopeQuery("domain", cts.trueQuery()),
        cts.jsonPropertyScopeQuery("salary", cts.trueQuery())
        ])
    ]))

Запросы области проверяют наличие свойств. После извлечения документов ваш код SJS может создать объект JavaScript или JSON с объединенными свойствами.

Для большей эффективности в производственном приложении вы можете создавать индексы для каждого из документов с использованием TDE, а затем объединять документы с помощью Optic API.

Однако ...

Учитывая, что все три документа имеют один и тот же ключ, почти наверняка лучшим подходом будет сохранение того, что вы определили как выходной документ, и отфильтровывание любых свойств, которые вам не нужны при извлечении.

DataHub Framework предоставляет управляемый способ создания документов и создания согласованных документов.

Надеясь, что помогает,

...