我正在使用 ML8。我在数据库中有一堆 json 文档。某些文档具有特定属性“summaryData”,例如:
{
...(other stuff)...
summaryData: {
count: 100,
total: 10000,
summaryDate: (date value)
}
}
然而,并非所有文档都具有此属性。我想构建一个 SJS 查询来检索那些没有定义此属性的文档。如果它是 SQL,我想等同于“WHERE summaryData IS NULL”
我不确定要在文档中搜索什么。任何建议都会有所帮助。
最佳答案
您可以使用 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,一个属性并否定了搜索。其他人可能有不同意见并将其标记为重复。
关于javascript - MarkLogic - 查询未定义特定 json 属性的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46263980/