2017-09-17 6 views
1

私はML8を使用しています。私はデータベースにjson文書の束を持っています。MarkLogic - 特定のjsonプロパティが定義されていないドキュメントのクエリ

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

ただし、すべてのドキュメントにこのプロパティが設定されているわけではありません。私はこのプロパティが定義されていないそれらのドキュメントを取得するためにSJSクエリを構築したいと思います。それがSQLの場合、「WHERE summaryData IS NULL」のようなものになると思います。

私はドキュメントで何を検索するのか分かりませんでした。どんな助言も役に立つでしょう。

答えて

3

あなたはcts.jsonPropertyScopeQuery()を使用して、ドキュメント内のJSONプロパティの存在と反対を見つけるにはcts.trueQuery()

に設定された第2のパラメータを見つけることができます、あなたは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のプロパティについて尋ねられ、検索を否定するためでした。他の人は、意見が異なり、重複しているとマークすることがあります。

関連する問題