Marklogic Java for循环

时间:2019-02-13 17:51:25

标签: marklogic

我有多种json格式。如何循环遍历json文件以显示开发人员的姓名。谢谢

示例:

doc1.json

{
 "script": "collectionlib.sjs"
 "version": "1.0.1"
 "Developers":"Melvin Mckee"
}

doc2.json

{
 "script": "TechReports.sjs"
 "version": "1.1.5"
 "Developers":"Brenton York"
}

我可以为单个json文件做

 'use strict';
  var doc = cts.doc("/doc1.json")
  var node = xdmp.toJSON(doc)
  node.root.Developers

//Return result: "Melvin Mckee"

但不确定如何构造For..Loop以获取结果,开发人员的名字是“ Melvin Mckee”和“ Brenton York”

var items = cts.uris(null,
                    null,
                    cts.collectionQuery("scripts-collection")
           ) 

for (var i = 0; i < items.length;i++){
     var doc = cts.doc(items[i]);
     var node = xdmp.toJSON(doc); 
     node.root.developers
  }

我在Qconsole上得到结果为NULL。

1 个答案:

答案 0 :(得分:2)

部分问题是node.root.developers的小写字母'd',而您提供的数据则大写的字母'D'。那可能是一个错字。

MarkLogic返回最后一个表达式的值,但是for循环不返回值。您要做的是在循环之前声明一个数组变量,在循环期间添加它,然后返回该变量。

尝试一下:

let uris = 
  cts.uris(
    null,
    null,
    cts.collectionQuery("scripts-collection")
  ) 

let devs = [];

for (let uri of uris) {
  let doc = cts.doc(uri);
  let node = xdmp.toJSON(doc);
  devs.push(node.root.Developers);
}

devs