MarkLogic - 查询未定义特定 json 属性 的文档
MarkLogic - query for documents where a specific json property is not defined
我正在使用 ML8。我在数据库中有一堆 json 文档。有些文档有一定的 属性 "summaryData",比如:
{
...(other stuff)...
summaryData: {
count: 100,
total: 10000,
summaryDate: (date value)
}
}
然而,并非所有文档都有此 属性。我想构建一个 SJS 查询来检索那些没有定义 属性 的文档。如果它是 SQL,我想等同于 "WHERE summaryData IS NULL"
我不确定要在文档中搜索什么。任何建议都会有所帮助。
您可以使用cts.jsonPropertyScopeQuery() and the second parameter set to cts.trueQuery()
在文档中找到JSON属性的存在
要找到相反的结果,您可以将查询的那部分包装在 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() 文档中有所解释。
最后:有人可能会争辩说这是 的重复 我本来打算将其标记为重复,但没有这样做,因为您询问了 SJS,一个 属性 并否定了搜索。其他人可能有不同意见并将其标记为重复。
我正在使用 ML8。我在数据库中有一堆 json 文档。有些文档有一定的 属性 "summaryData",比如:
{
...(other stuff)...
summaryData: {
count: 100,
total: 10000,
summaryDate: (date value)
}
}
然而,并非所有文档都有此 属性。我想构建一个 SJS 查询来检索那些没有定义 属性 的文档。如果它是 SQL,我想等同于 "WHERE summaryData IS NULL"
我不确定要在文档中搜索什么。任何建议都会有所帮助。
您可以使用cts.jsonPropertyScopeQuery() and the second parameter set to cts.trueQuery()
在文档中找到JSON属性的存在要找到相反的结果,您可以将查询的那部分包装在 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() 文档中有所解释。
最后:有人可能会争辩说这是