在 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 中做到这一点。
我想根据一些 属性 不为空的内容从查询控制台搜索文档。假设这是我拥有的 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 中做到这一点。