2017-01-17 2 views
0

Ich habe Dokumente wie -begrenzte Elemente aus einem Dokument

<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> 

Ich habe tun, um die IDs für die Dokumente zu holen, ich mag die a:id und a:number all diese Dokumente extrahieren, die die Abfrage entsprechen ohne Verwenden von XPath. Ich kann leicht das Dokument mit der ID unter Verwendung eines cts.elementValueQuery erhalten und dann XPath verwenden, um die Elemente zu erhalten. So etwas -

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') 

Aber ich möchte, dass MarkLogic nur ausgewählte Elemente zurückgibt.

Kann mir bitte jemand den optimierten Weg sagen, dies zu tun?

ich diese Abfrage geschrieben haben (Ich nicht das erwartete Ergebnis zu geben) -

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

Ich suche eine Ausgabe wie diese zu erhalten -

| <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

Können Sie zeigen, wie die Ausgabe aussehen soll und was haben Sie selbst versucht? – grtjn

+0

@grtjn Ich habe die Frage aktualisiert. Kannst du bitte jetzt etwas vorschlagen? –

Antwort

3

Das ist in gewisser Hinsicht eine Datenmodellierungsherausforderung. Sie möchten Ihre Dokumente nicht filtern (xPath in sie), aber Sie wollen nur einen Teil der Ergebnisse zurück.

Selbst wenn Sie versuchen sollten, den durchsuchbaren Ausdruck auszuprobieren, ist das Standardergebnis die erste Übereinstimmung, sodass Sie gefilterte Abfragen weiterhin aktivieren müssen.

Leider ist der optimierte Weg dies über Bereichsindizes ... Aber sobald die Indizes vorhanden sind, können Sie die ID und die Zahlen in einem json-Ergebnissatz durch Co-Vorkommen extrahieren, um sie dann weiter zu verarbeiten .

Verwandte Themen