MarkLogic - 基于 json 路径过滤的 CTS 查询
MarkLogic - CTS query to filter based on json path
我在一个集合中有两个 JSON 文档,如下所示
Doc 1
-----
"instance": {
"PolicyInfo": [
{
"PolicyNumber": "P1-111",
"PolicyStatusCd": "Primary"
},
{
"PolicyNumber": "P2-222",
"PolicyStatusCd": "Additional"
}
],
"ClaimInfo" : [
{
"PolicyNumber": "P3-333",
"PolicyStatusCd": "Additional"
}
]
}
Doc 2
-----
"instance": {
"PolicyInfo": [
{
"PolicyNumber": "P2-222",
"PolicyStatusCd": "Primary"
}
],
"ClaimInfo" : [
{
"PolicyNumber": "P1-111",
"PolicyStatusCd": "Primary"
}
]
}
我输入的保单编号为 P1-111,仅当保单的 PolicyInfo 下的 PolicystatusCd 为 'Primary' 时才需要 return 文档。所以,我应该 return 只有 Doc1 而不是 Doc2,因为 Doc2 的政策 P1-111 在 ClaimInfo 中是主要的,但不是 PolicyInfo
我正在尝试使用 cts.serch(最好不创建默认通用索引以外的其他索引),但找不到合适的解决方案。
或者,我可以使用 cts.propertyValueQuery 之类的东西来 return 两个文档并使用 JavaScipt 过滤掉 Doc2,但检查我是否可以用 MarkLogic 函数本身完成所有这些。
提前致谢!
您可以使用 cts.jsonPropertyScopeQuery 来达到这个目的。你会这样写你的查询:
cts.jsonPropertyScopeQuery('PolicyInfo',
cts.jsonPropertyValueQuery('PolicyNumber', 'P1-111')
)
HTH!
我在一个集合中有两个 JSON 文档,如下所示
Doc 1
-----
"instance": {
"PolicyInfo": [
{
"PolicyNumber": "P1-111",
"PolicyStatusCd": "Primary"
},
{
"PolicyNumber": "P2-222",
"PolicyStatusCd": "Additional"
}
],
"ClaimInfo" : [
{
"PolicyNumber": "P3-333",
"PolicyStatusCd": "Additional"
}
]
}
Doc 2
-----
"instance": {
"PolicyInfo": [
{
"PolicyNumber": "P2-222",
"PolicyStatusCd": "Primary"
}
],
"ClaimInfo" : [
{
"PolicyNumber": "P1-111",
"PolicyStatusCd": "Primary"
}
]
}
我输入的保单编号为 P1-111,仅当保单的 PolicyInfo 下的 PolicystatusCd 为 'Primary' 时才需要 return 文档。所以,我应该 return 只有 Doc1 而不是 Doc2,因为 Doc2 的政策 P1-111 在 ClaimInfo 中是主要的,但不是 PolicyInfo
我正在尝试使用 cts.serch(最好不创建默认通用索引以外的其他索引),但找不到合适的解决方案。
或者,我可以使用 cts.propertyValueQuery 之类的东西来 return 两个文档并使用 JavaScipt 过滤掉 Doc2,但检查我是否可以用 MarkLogic 函数本身完成所有这些。
提前致谢!
您可以使用 cts.jsonPropertyScopeQuery 来达到这个目的。你会这样写你的查询:
cts.jsonPropertyScopeQuery('PolicyInfo',
cts.jsonPropertyValueQuery('PolicyNumber', 'P1-111')
)
HTH!