如何遍历 MarkLogic 中的序列值?
How to iterate through a Sequence value in MarkLogic?
我对 MarkLogic 比较陌生,正在使用 JavaScript。我下面有一个 Sequence 对象类型(不是文档或 XML 对象类型)。我如何遍历它的值,例如,我想获取实体下 Property2 元素的值?
<info>
<title>Entity</title>
<version>0.0.1</version>
</info>
<Entity>
<Property1>100487</Property1>
<Property2>130008HU52</Property2>
<Property3/>
<Property4>Wellhead</Property4>
</Entity >
能否分享一个示例代码片段,说明如何让它发挥作用?
您可以迭代序列并根据所需条件获取序列的特定值。您问题的基本代码如下。
let $test := (<info>
<title>Entity</title>
<version>0.0.1</version>
</info>,
<Entity>
<Property1>100487</Property1>
<Property2>130008HU52</Property2>
<Property3/>
<Property4>Wellhead</Property4>
</Entity >)
return $test[2]/Property2/text()
在特定问题上,Sequence 是一个 JavaScript 可迭代对象,因此如果您在 JavaScript 中工作,您可以使用 for..of loop
进行迭代显示在:
http://docs.marklogic.com/guide/jsref/api#id_59096
for (const doc of fn.collection('/my/coll')) {
// do something with doc
}
您还可以使用 toArray()
方法将序列转换为 JavaScript 数组。
然后您可以使用标准数组方法进行迭代、映射或归约。
如果序列由单个项目组成,您可以将序列传递给fn.head()
以获取项目:
fn.head(xdmp.arrayValues([1,2,3]))
综上所述,从问题中不清楚序列中有哪些项目。
如果序列有两个元素项(info
和Entity
),循环可以对每个元素使用xpath()
方法来提取子元素。
我对 MarkLogic 比较陌生,正在使用 JavaScript。我下面有一个 Sequence 对象类型(不是文档或 XML 对象类型)。我如何遍历它的值,例如,我想获取实体下 Property2 元素的值?
<info>
<title>Entity</title>
<version>0.0.1</version>
</info>
<Entity>
<Property1>100487</Property1>
<Property2>130008HU52</Property2>
<Property3/>
<Property4>Wellhead</Property4>
</Entity >
能否分享一个示例代码片段,说明如何让它发挥作用?
您可以迭代序列并根据所需条件获取序列的特定值。您问题的基本代码如下。
let $test := (<info>
<title>Entity</title>
<version>0.0.1</version>
</info>,
<Entity>
<Property1>100487</Property1>
<Property2>130008HU52</Property2>
<Property3/>
<Property4>Wellhead</Property4>
</Entity >)
return $test[2]/Property2/text()
在特定问题上,Sequence 是一个 JavaScript 可迭代对象,因此如果您在 JavaScript 中工作,您可以使用 for..of loop
进行迭代显示在:
http://docs.marklogic.com/guide/jsref/api#id_59096
for (const doc of fn.collection('/my/coll')) {
// do something with doc
}
您还可以使用 toArray()
方法将序列转换为 JavaScript 数组。
然后您可以使用标准数组方法进行迭代、映射或归约。
如果序列由单个项目组成,您可以将序列传递给fn.head()
以获取项目:
fn.head(xdmp.arrayValues([1,2,3]))
综上所述,从问题中不清楚序列中有哪些项目。
如果序列有两个元素项(info
和Entity
),循环可以对每个元素使用xpath()
方法来提取子元素。