如何在marklogic中编写Java脚本查找功能?

时间:2019-01-02 08:04:55

标签: marklogic marklogic-9

我的数据库中有三个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中的“ id”从相应文档中获取详细信息。

输出应如下所示:

/final/100.json

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

如何执行此操作?

1 个答案:

答案 0 :(得分:2)

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

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框架提供了一种指导的方式来暂存文档和生成统一的文档。

希望有帮助,