簡體   English   中英

Marklogic中的非Null值-搜索JSON文檔,其數組中的屬性在Marklogic中具有非空值

[英]Non Null values in Marklogic - Search JSON documents with attributes in array with not null values in Marklogic

需要在Marklogic中搜索的JSON文檔的結構

{  
   "MESSAGEID":"18878285",
   "ORDERNUMBER":["2295796"],
   "CATEGORY":"F3702200000"
}

我想使用Javascript搜索Marklogic中所有包含非空ORDERNUMBER JSON文檔的URI

我正在使用以下查詢,但仍顯示包含"ORDERNUMBER":[]的文檔的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"] ,但ORDERNUMBER: ["xx"]是您啟用了過濾(需要cts.search ),或者是否能夠找到適當的通配符設置。

老實說,我認為最簡單的解決方案是將范圍索引放在ORDERNUMBER ,並使用rangeQuery:

cts.rangeQuery(cts.pathReference('ORDERNUMBER'), '>', '')

HTH!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM