我想从满足cts.Query的文档中获取一些选定的元素。我在MarkLogic文档上使用javascript就是这样 -
<a:root xmlns:a = 'some-ns'>
<a:id>some-id</a:id>
<a:some-element1/>
<a:some-element2/>
<a:some-element3/>
.
.
<a:number field='field1'>3</a:number>
<a:number field='field2'>4</a:number>
.
.
</a:root>
我希望在单个查询中获得a:id
,a:number
元素和field
a:number
属性。
我尝试使用 -
cts.valueTuples(
[
cts.elementReference(fn.QName(a, 'id')),
cts.elementAttributeReference(fn.QName(a, 'number'), xs.QName('field')),
cts.elementReference(fn.QName(a, 'number'))
],
[],
cts.andQuery(
[
<query1>,
<query2>
]
)
)
但这给了我价值元组中3个查询的所有结果组合(类似于笛卡尔积)。
如何获得所需的结果?
答案 0 :(得分:1)
如果启用了相应的字位置索引,则可以尝试ordered
选项:
仅在第一个词典中的值包含同时出现 出现在第二个词典的值之前。需要那个词 两个词典的位置都已启用。
我认为它不会阻止交叉产品,但它至少应该导致更少的产品。
但是,对cts.values
和cts.valueTuples
执行多次调用没有任何问题。您可以进行三次调用,并询问uri值组合(使用cts.uriReference()
),并使用uri来关联结果..
HTH!