如何在 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 框架提供了一种用于暂存文档和生成协调文档的指导方法。
希望对您有所帮助,
我的数据库中有三个 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 框架提供了一种用于暂存文档和生成协调文档的指导方法。
希望对您有所帮助,