如何在 marklogic 中编写 java 脚本查找函数?

How to write java script lookup functions in marklogic?

我的数据库中有三个 json 文档,它们具有唯一的 URI。

/employee/100.json

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

/domain/100.json

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

/salary/100.json

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

现在,我必须编写一个 javascript 查找函数,以根据来自 /employee/100.json.[=15 的 "id" 从相应文档中获取详细信息=]

输出应如下所示:

/final/100.json

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

如何做到这一点??

一种方法是使用类似于以下的查询来检索三个文档:

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 框架提供了一种用于暂存文档和生成协调文档的指导方法。

希望对您有所帮助,