javascript - MarkLogic - 查询未定义特定 json 属性的文档

标签 javascript json marklogic sjs

我正在使用 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/

相关文章:

json - Jackson 和 Gson 是否直接实现了标准 JSR-353?

php - 获取触发 "Failed calling MyClass::jsonSerialize()"异常的异常

javascript - 文件输入: Chrome is not checking if file still exist before submitting form

javascript - 如何在单击 body 单击时防止 div 上的 onclick 事件?

javascript - d3 v7 中的简单平移和缩放

javascript - 在具有通过 gulp-submodule 注入(inject)的依赖项的模块上运行 gulp 任务,该模块又通过 gulp-submodule 拥有自己的依赖项,失败

php - 如果可能的话,使用 PHP 从 JSON 格式的两个 MySQL 表中获取数据

json - 需要在 MarkLogic 上编写 JSON 查询

javascript - MarkLogic 应用程序服务器自定义登录页面未从 ajax GET 请求接收 SessionID cookie

每个集合的 MarkLogic 数据库大小