我在一个集合中有两个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下Policy的PolicystatusCd为“ Primary”时才需要返回文档。因此,我应该仅返回Doc1,而不返回Doc2,因为Doc2在ClaimInfo中将策略P1-111作为主要策略,而在PolicyInfo中则没有
我正在尝试使用cts.serch(最好不创建除默认通用索引以外的其他索引),但是找不到合适的解决方案。
或者,我可以使用类似cts.propertyValueQuery的方法返回两个文档,并使用JavaScipt过滤掉Doc2,但是请检查我是否可以使用MarkLogic函数本身完成所有操作。
提前谢谢!
答案 0 :(得分:1)
您可以为此使用cts.jsonPropertyScopeQuery。您可以将查询写成这样:
cts.jsonPropertyScopeQuery('PolicyInfo',
cts.jsonPropertyValueQuery('PolicyNumber', 'P1-111')
)
HTH!