1

我在一个集合中有两个 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 为“主要”时才需要返回该文档。所以,我应该只返回 Doc1 而不是 Doc2,因为 Doc2 将政策 P1-111 作为 ClaimInfo 中的主要政策,而不是 PolicyInfo

我正在尝试使用 cts.serch (最好不创建默认通用索引以外的其他索引),但找不到合适的解决方案。

或者,我可以使用 cts.propertyValueQuery 之类的东西来返回两个文档并使用 JavaScipt 过滤掉 Doc2,但检查我是否可以使用 MarkLogic 函数本身完成所有这些操作。

提前致谢!

4

1 回答 1

1

您可以为此目的使用cts.jsonPropertyScopeQuery 。你会这样写你的查询:

cts.jsonPropertyScopeQuery('PolicyInfo',
  cts.jsonPropertyValueQuery('PolicyNumber', 'P1-111')
)

于 2019-01-11T05:45:10.997 回答