我有類似結構的一系列文件:和集合函數
<DOCUMENT>
<AMOUNTS>
<ELEMENT>
<AMOUNT>10.00</AMOUNT>
<INFO>
<CODE1>132</CODE1>
<CODE2>022</CODE2>
</INFO>
</ELEMENT>
<ELEMENT>
<AMOUNT>10.00</AMOUNT>
<INFO>
<CODE1>132</CODE1>
<CODE2>121</CODE2>
</INFO>
</ELEMENT>
<ELEMENT>
<AMOUNT>15.00</AMOUNT>
<INFO>
<CODE1>156</CODE1>
<CODE2>121</CODE2>
</INFO>
</ELEMENT>
</AMOUNTS>
</DOCUMENT>
我希望做的金額元素的各種款項,所以我已經把路徑範圍索引DOCUMENT/AMOUNTS/ELEMENT/AMOUNT
希望使用sum-aggregate
函數。但是,當使用cts:sum-aggregate
函數時,如果文檔中包含多個具有相同值的元素,則會發生問題。爲了說明我所看到的問題,假設上面的XML存儲在'/DOCS/DOC1.XML
'uri。然後運行以下xQuery以獲取文檔中所有文檔中所有文檔的總和。我做的和在兩種不同的方式和獲得兩種不同的結果:
(
fn:sum(doc('/DOCS/DOC1.XML')/DOCUMENT/AMOUNTS/ELEMENT/AMOUNT),
cts:sum-aggregate(
cts:path-reference("DOCUMENT/AMOUNTS/ELEMENT/AMOUNT"),
("any"),
cts:document-query('/DOCS/DOC1.XML')
)
)
的fn:sum
函數給出35和cts:sum-aggregate
給25和聚集功能只包括值中的一個總和。
我覺得我做錯了什麼,但我無法弄清楚什麼,有人可以爲我揭示一些事情嗎?
感謝
大衛
有趣。 「項目頻率」通常用於指示按索引中的項目數與數字片段(文檔)的排序順序。您是否嘗試明確定義類型爲「decimal」? – wst
「片段頻率」表示它計算特定值出現的片段數量,而不管它在該片段中發生了多少次。 「物品頻率」本身就是真實的物品,所以是的,「物品頻率」就是你想要的。是的,'fragment-frequency'是默認值:http://docs.marklogic.com/cts:aggregate – grtjn