【问题标题】:How to access array of objects in Marklogic jsearch mapper function如何访问 Marklogic jsearch 映射器函数中的对象数组
【发布时间】:2022-01-16 21:59:28
【问题描述】:

我的集合中有一个格式如下的 JSON 文档:

{
 "id":{
  "idValue":[
   {"value1": ["a"],
    "value2":["b"]
   },
   {"value1": ["a"],
    "value2":["c"]
    }
  ]
 }
}

我需要获取具有 "value1"=="a" 和 "value2"=="b" 的 JSON 文档并仅返回该实例。

我在我的代码中使用了 jsearch,如下所示

const jsearch = require('/MarkLogic/jsearch.sjs');
var prodct = jsearch.collections(["idCollection"]);
function mapper(result) {
 return {
  value1: result.document.id["idValue"],
  value2: result.document.id["idValue"]
 };
}
var output=
 prodct.documents()
.where(cts.andQuery([cts.jsonPropertyWordQuery("value1","a"),cts.jsonPropertyWordQuery("value2","b")]))
.slice(0,10)
.map(mapper)
.result();
output.results

如何访问映射器函数中的值数组?

【问题讨论】:

    标签: javascript arrays json object marklogic-9


    【解决方案1】:

    您可以通过索引引用数组项。当你想要节点的值时,使用.valueOf()

    function mapper(result) {
     const idValue = result.document.id.idValue[0]
     return {
      value1: idValue.value1[0].valueOf(),
      value2: idValue.value2[0].valueOf()
     };
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-23
      • 2023-04-08
      • 2021-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 2020-09-18
      相关资源
      最近更新 更多