2017-09-17 10 views
1

ML8을 사용하고 있습니다. 나는 데이터베이스에 json 문서들을 가지고있다.MarkLogic - 특정 json 속성이 정의되지 않은 문서에 대한 쿼리

{ 
...(other stuff)... 
    summaryData: { 
    count: 100, 
    total: 10000, 
    summaryDate: (date value) 
    } 
} 

그러나, 모든 문서가이 속성을 가지고 : 일부 문서는 특정 속성을 "summaryData"같은 것을 가지고있다. 이 속성을 정의하지 않은 문서를 검색하기 위해 SJS 쿼리를 생성하고 싶습니다. 그것이 SQL이라면 "WHERE summaryData is NULL"과 같은 것이 될 것이라고 생각합니다.

문서에서 무엇을 검색해야할지 모르겠습니다. 조언이 도움이 될 것입니다.

당신은 반대를 찾으려면 cts.jsonPropertyScopeQuery()cts.trueQuery()

로 설정 두 번째 매개 변수를 사용하여 문서의 JSON 속성의 존재를 찾을 수 있습니다

답변

3

, 당신은 cts.notQuery()

예에서 쿼리의 일부를 포장 할 수 있습니다 : 알고 선명도 (이상 혼란 ...에 대한 더 큰 쿼리의 내부

cts.search(
    cts.notQuery(
    cts.jsonPropertyScopeQuery('summaryData', cts.trueQuery()) 
) 
) 

예 .. :)

cts.search(
    cts.andQuery([ 
    cts.directoryQuery('/some/scoping/path/'), 
    cts.notQuery(
     cts.jsonPropertyScopeQuery('myMissingElement', cts.trueQuery()) 
    ) 
]) 
) 

이것은 다소 cts.elementQuery() 설명서에 설명되어 있습니다.

마지막으로, 이것은 Need XQuery syntax for 'if Exists()' behaviour in search api과 중복 될 수 있다고 주장 할 수 있습니다. 중복으로 표시 하겠지만 SJS에 대해 물어보고 검색을 무효화했기 때문에 표시하지 않았습니다. 다른 사람이 의견이 다를 수 있으며이를 중복으로 표시 할 수 있습니다.