我正在使用ML8。我在数据库中有一堆json文档。有些文件具有某种属性" summaryData",类似于:
{
...(other stuff)...
summaryData: {
count: 100,
total: 10000,
summaryDate: (date value)
}
}
但是,并非所有文档都具有此属性。我想构建一个SJS查询来检索那些没有定义此属性的文档。如果它是SQL,我猜相应的东西就像" WHERE summaryData IS NULL"
我不确定要在文档中搜索什么。任何建议都会有所帮助。
答案 0 :(得分:5)
您可以使用cts.jsonPropertyScopeQuery()找到文档中存在的JSON属性,并将第二个参数设置为cts.trueQuery()
要找到相反的结果,您可以将查询的那部分包装在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,属性并否定了搜索。其他人的意见可能不同,并将其标记为重复。