【问题标题】:MarkLogic - CTS query to filter based on json pathMarkLogic - 基于 json 路径过滤的 CTS 查询
【发布时间】:2019-01-10 21:10:17
【问题描述】:

我在一个集合中有两个 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 函数本身完成所有这些操作。

提前致谢!

【问题讨论】:

    标签: marklogic marklogic-9 marklogic-dhf


    【解决方案1】:

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

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

    HTH!

    【讨论】:

    • 为我们工作!谢谢!
    猜你喜欢
    • 2013-12-07
    • 1970-01-01
    • 2016-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多