返回按cts键排序的地图:* - Marklogic中的值共现

时间:2014-09-06 15:18:09

标签: marklogic

我有一百个文件如下,其中n = 1到100。

<root>
<parent>
<child id="n">sometext</child>
</parent>
</root>

我使用以下查询来获取(id,uri)的地图。

cts:element-attribute-value-co-occurrences(xs:QName("child"),xs:QName("id"),xs:QName("xdmp:document"),(),("ascending","map",
     "collation-2=http://marklogic.com/collation/codepoint"),())

我希望通过指定“升序”选项按键对地图进行排序。但是返回的地图没有排序。事实上,每次id=53的文档都位于顶部。 我如何获得有序地图?

2 个答案:

答案 0 :(得分:2)

map:map是作为HashMap实现的,因此无论添加键的方法或顺序如何,您都无法从中获取排序键。使用非映射响应,并使用FLWOR对其进行迭代,以按函数返回的顺序处理它。

HTH!

答案 1 :(得分:2)

结果未排序,因为map:map项目是http://en.wikipedia.org/wiki/Hash_table的种类,因此键按照定义以伪随机顺序排列。

您可以将地图重建为json:object按值排序,或按cts:frequency重建。词典函数可能应该使用json:object而不是map:map,但是从7.0-3开始它们不会。如果您愿意,可以将该想法作为RFE发送给MarkLogic支持。