在 marklogic 中搜索 Not null 属性 值

Not null property value search in marklogic

我想根据一些 属性 不为空的内容从查询控制台搜索文档。假设这是我拥有的 json 个文档。

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

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

我可以这样查询基于属性的文档

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

我无法在此查询中使用 不等于逻辑运算符。任何人都可以让我知道,如果我必须根据 属性 a3 搜索不为空的文档,那么查询必须是什么?

仅使用 value-queries,我会这样做:

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()))
            )
           ) 
      );

我可以通过使用 word-query 而不是值查询来使用更小的查询来影响它。

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