Roy*_*ang 1 javascript json marklogic sjs
我正在使用ML8。我在数据库中有一堆json文档。一些文档具有某些属性“ summaryData”,例如:
{
...(other stuff)...
summaryData: {
count: 100,
total: 10000,
summaryDate: (date value)
}
}
Run Code Online (Sandbox Code Playgroud)
但是,并非所有文档都具有此属性。我想构造一个SJS查询来检索那些未定义此属性的文档。如果是SQL,我想等效的内容应该是“ WHERE summaryData IS NULL”
我不确定要在文档中搜索什么。任何建议都会有所帮助。
您可以使用cts.jsonPropertyScopeQuery()和第二个参数设置为cts.trueQuery()来找到文档中JSON属性的存在。
要找到相反的地方,您可以将查询的那部分包装在 cts.notQuery()
例:
cts.search(
cts.notQuery(
cts.jsonPropertyScopeQuery('summaryData', cts.trueQuery())
)
)
Run Code Online (Sandbox Code Playgroud)
为了清楚起见,在更大的查询中添加了示例(或更混乱。..
cts.search(
cts.andQuery([
cts.directoryQuery('/some/scoping/path/'),
cts.notQuery(
cts.jsonPropertyScopeQuery('myMissingElement', cts.trueQuery())
)
])
)
Run Code Online (Sandbox Code Playgroud)
cts.elementQuery()文档对此做了一些解释。
最后:有人可能会说这与Need api的需求XQuery语法重复, 我想将其标记为重复,但这并不是因为您询问了SJS,属性并否定了搜索。其他人的观点可能会有所不同,并将其标记为重复。