首页 > 解决方案 > MarkLogic 中的“范围”范围查询?

问题描述

鉴于以下文档结构,我需要编写一个查询来查找,例如,所有 > 500 美元的账户。

{
  "account": 1, 
  "assets": [
    {
      "currency": "USD", 
      "amount": 600
    }, 
    {
      "currency": "CAD", 
      "amount": 1000
    }, 
    {
      "currency": "EUR", 
      "amount": 200
    }
  ]
}

使用 Xpath 谓词,它会是这样的:

fn:collection()[//(currency='USD' and amount>500)]

但是,我无法利用范围索引为相同目的创建 cts 查询。我可以天真地为每种货币类型创建一个单独的路径范围索引,但这似乎太多了。

有什么建议么?谢谢!

标签: marklogic

解决方案


cts.search(cts.jsonPropertyScopeQuery('assets', 
           cts.andQuery([cts.jsonPropertyValueQuery('currency', 'USD'),
                         cts.jsonPropertyRangeQuery('amount', '>', 599.99)
                         ])
          ))

推荐阅读