2017-01-17 18 views
0

から限定された要素を取得 - 私はフェッチした文書のIDを持っているん私のような書類持っている文書

<a:root xmlns:a = 'some-ns'> 
    <a:id>some-id</a:id> 
    . 
    . 
    <a:number field='field1'>3</a:number> 
    <a:number field='field2'>4</a:number> 
    . 
    . 
</a:root> 

を、私はせずに、クエリに一致するすべてのそれらの文書のa:ida:numberを抽出したいですXPathを使用します。 cts.elementValueQueryを使用してIDと一致する文書を簡単に取得し、XPathを使用して要素を取得できます。このようなもの -

cts.search( 
    cts.andQuery(
    [ 
     cts.collectionQuery('liveCollection'), 
     cts.elementValueQuery(fn.QName(a, 'id'), 'http://iddn.icis.com/series/energy/cegh-day-ahead-index')  
    ] 
) 
).next().value.getElementsByTagNameNS(a, 'number') 

しかし、私はMarkLogicに選択された要素のみを返します。

これを行う最適な方法を教えていただけますか?私は(私に期待される結果を与えていない)このクエリを書かれている

-

cts.elementValueCoOccurrences(
    fn.QName(c, 'id'), 
    fn.QName(c, 'precision'), 
    ('map'), 
    cts.andQuery(
     [ 
     cts.collectionQuery(liveCollection), 
     cts.elementValueQuery(fn.QName(c, 'id'), seriesIds) 
     ] 
    ) 
) 

私はこのような出力を得るために探しています -

を| <a:id>id-1</a:id> | | <a:number field='field1'>3</a:number> |

| <a:id>id-1</a:id> | <a:number field='field2'>4</a:number> |

| <a:id>id-2</a:id> | | <a:number field='field1'>3</a:number> |

+0

出力がどのように見えるのか、何を試してみましたか? – grtjn

+0

@grtjn質問を更新しました。今何かお勧めしますか? –

答えて

3

これは、いくつかの点でデータモデリングの課題です。ドキュメントをフィルタリングする必要はありませんが、結果の一部だけが戻ってくるだけです。

検索可能な表現で気になるようにしようとしても、デフォルトの結果が最初に一致するため、依然としてフィルタリングされたクエリを有効にする必要があります。

残念ながら、これを行うための最適な方法は範囲索引によるものですが、索引が整ったら、共起を使用してjson結果セットのidと数値を抽出してから処理します。

関連する問題