Обход узла Json с использованием Javascript в marklogic?

Я хочу пройти через узел JSON, который выглядит следующим образом (т.е./node.json)

{
    "One": {
        "Name": "One",
        "Country": "US"
    },
    "Two": {
        "State": "kentucky"
    },
    "Three": {
        "Element1": "value1",
        "Element2": "value2",
        "Element3": "value3",
        "Element4": "value4",
        so on ...
    }
}

Обновлен мой вариант использования: я попытался запустить задание CORB с приведенными ниже конфигурациями

Transform.xqy (где я храню все элементы в массиве)

var name = fn.tokenize(URI, ";");
const node = cts.doc(name);
var a= node.xpath("/One/*");
var b= node.xpath("/Two/*");
var c= node.xpath("/Three/*");
fn.stringJoin([a, b, c,name], " , ")

Когда я запустил задание CORB для создания файла CSV для 1,3 млн документов в моей базе данных marklogic, это была бесконечная история.

1 ответ

Решение

Обновлен для использования партии из Corb

ХОРОШО. Основываясь на дополнительной информации в заявке: (1) Вы не выполняете итерацию по uris (2) Вы выполняете объединение во вложенном массиве. Кажется странным

Мой пример документа:

declareUpdate()
let obj = {
    One: {
        Name: "One",
        Country: "US"
    },
    Two: {
        State: "kentucky"
    },
    Three: {
        Element1: "value1",
        Element2: "value2",
        Element3: "value3",
        Element4: "value4"
    }
}

xdmp.documentInsert('/test1.json', obj)
xdmp.documentInsert('/test2.json', obj)

Исходя из примера, код, который, я думаю, будет работать в вашем модуле. Моча должна имитировать пакетную мочу, исходящую от Корба:

let uris= '/test1.json;/test2.json'
let rows = uris.split(';')
rows.map(uri => {
  let obj = fn.head(fn.doc(uri)).toObject()
  return   [
              ...Object.keys(obj.One).map(k => obj.One[k]),
              ...Object.keys(obj.Two).map(k => obj.Two[k]),
              ...Object.keys(obj.Three).map(k => obj.Three[k])               
           ].join(',')
}).join('\n')

В результате чего:

One,US,kentucky,value1,value2,value3,value4    
One,US,kentucky,value1,value2,value3,value4
Другие вопросы по тегам