javascript - Marklogic 中的非 Null 值 - 在 Marklogic 中搜索具有非空值的数组属性的 JSON 文档
问题描述
需要在 Marklogic 中搜索的 JSON 文档的结构
{
"MESSAGEID":"18878285",
"ORDERNUMBER":["2295796"],
"CATEGORY":"F3702200000"
}
ORDERNUMBER
我想使用 Javascript搜索 Marklogic 中所有 JSON 文档的 URI,这些文档由 not null 组成
我正在使用以下查询,但它仍然显示包含以下内容的文档的 URI"ORDERNUMBER":[]
cts.uris("",null,cts.andQuery
([
cts.jsonPropertyValueQuery("ORDERNUMBER", "*", "wildcarded"),
cts.notQuery(cts.jsonPropertyValueQuery("ORDERNUMBER",""))
])
);
解决方案
您通常有几个选项,但空数组的情况特别难以区分。这是因为它既不是空字符串值,也不是 null,但该属性确实存在。
cts.jsonPropertyScopeQuery("ORDERNUMBER", cts.trueQuery())
将匹配具有该属性的任何文档。
cts.jsonPropertyValueQuery("ORDERNUMBER", "")
匹配ORDERNUMBER: ""
和ORDERNUMBER: [""]
.
cts.jsonPropertyValueQuery("ORDERNUMBER", null)
匹配ORDERNUMBER: null
。
cts.jsonPropertyValueQuery("ORDERNUMBER", "?*", "wildcarded")
匹配ORDERNUMBER: null
(不知道为什么)、ORDERNUMBER: "xx"
和ORDERNUMBER: ["xx"]
,但前提是您启用过滤(需要cts.search
),或者您能够找到适当的通配符设置。
老实说,我认为最简单的解决方案是在 上放置一个范围索引ORDERNUMBER
,然后使用 rangeQuery:
cts.rangeQuery(cts.pathReference('ORDERNUMBER'), '>', '')
!
推荐阅读
- python - python程序读取json文件中的特定字段输出错误
- c - 将文本文件转换为 CSV 文件的 C 程序
- django - Django DRF 在错误消息中显示字段的详细名称
- php - 对多维数组进行多级排序
- java - 目标 org.codehaus.mojo:exec-maven-plugin:1.6.0:java 的参数“mainClass”丢失或无效
- python - 使用查询集搜索后 Django 重定向
- ios - 从firebase存储返回的url是nil Swift4
- sql - 特殊情况下如何计算就业经验
- python - 提高 python django models.py 查询的性能
- sql - 我怎样才能重复这个查询 100 次?