2017-01-17 4 views
0

У меня есть документы, такие как -Fetch ограниченные элементы из документа

<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:id и a:number всех тех документов, которые соответствуют запросу без используя XPath. Я могу легко получить документ, соответствующий идентификатору, с помощью cts.elementValueQuery, а затем использовать 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

Это задача моделирования данных в некотором роде. Вы не хотите фильтровать свои документы (xPath в них), но вы хотите вернуть часть результатов.

Даже если вы пытались получить представление о своем поисковом выражении, результатом по умолчанию является первое совпадение, поэтому вам все равно нужно включить фильтрованные запросы.

К сожалению, оптимизированный способ сделать это - это индексы диапазонов ... Но как только индексы будут на месте, вы можете использовать совместное использование для извлечения идентификатора и чисел в наборе результатов json для последующего процесса ,

Смежные вопросы