在marklogic

时间:2017-01-13 08:01:04

标签: marklogic

我想根据一些非空的属性从查询控制台搜索文档。让我们说这是我的json文件。

  

{" a1" :" 1234"," a2" :" abc"," a3" :null," a4" :" mno" }

     

{" a1" :" 1235"," a2" :" xyz"," a3" :"价值"," a4" :" mno" }

我可以根据这样的属性来查询文档

cts:search(fn:collection(), cts:json-property-value-query("a3","value"));

我无法对此查询使用不等逻辑运算符。任何人都可以告诉我,如果我必须根据属性 a3 搜索非空的文件,那么查询的内容是什么?

1 个答案:

答案 0 :(得分:3)

只使用值查询,我会这样做:

cts:search(fn:collection(), cts:and-query(
            (
            cts:json-property-value-query("a3", "*", "wildcarded"),
            cts:not-query(cts:json-property-value-query("a3", json:null()))
            )
           ) 
      );

通过使用单词查询而不是值查询,我可以通过较小的查询来影响这一点。

请注意,使用通配符查询只是为了隔离具有元素' a3'的候选文档。对于XML,我会使用元素查询来确保我有元素,但我不知道有什么方法可以直接在json中这样做。