如何在marklogic中编写java脚本查找函数?
我的数据库中有三个json文档,它们具有唯一的URI /employee/100.json如何在marklogic中编写java脚本查找函数?,marklogic,marklogic-9,Marklogic,Marklogic 9,我的数据库中有三个json文档,它们具有唯一的URI /employee/100.json { "id": "100", "name": "niranjan", "status": "unprocessed" } /domain/100.json { "id": "100", "domain": "java" } /薪金/100.json { "id": "100", "salary": "3000" } 现在,我必须编写一个javascript查找函数
{
"id": "100",
"name": "niranjan",
"status": "unprocessed"
}
/domain/100.json
{
"id": "100",
"domain": "java"
}
/薪金/100.json
{
"id": "100",
"salary": "3000"
}
现在,我必须编写一个javascript查找函数,根据/employee/100.json中的“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框架提供了一种引导性的方法,用于准备文档和生成协调的文档
希望能有所帮助,一种方法是使用类似于以下内容的查询来检索这三个文档:
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框架提供了一种引导性的方法,用于准备文档和生成协调的文档
希望这能有所帮助,你能发布你迄今为止尝试过的内容吗?我没有用javascript尝试过任何东西,但我正在经历这个过程。你能发布你迄今为止尝试过的内容吗?我没有用javascript尝试过任何东西,但我正在经历这个过程,谢谢!上面的代码运行良好。但是,如何将其限制为特定集合或uri???我尝试了cts.collectionMatch,但其返回的空序列将cts.collectionQuery()添加到cts.andQuery()的子查询数组中。一般的模式是查询构造函数以*query()结尾。cts.collectionMatch()在集合词典中查找集合。谢谢!上面的代码运行良好。但是,如何将其限制为特定集合或uri???我尝试了cts.collectionMatch,但其返回的空序列将cts.collectionQuery()添加到cts.andQuery()的子查询数组中。一般的模式是查询构造函数以*query()结尾。cts.collectionMatch()在集合词典中查找集合。