我有一百个文件如下,其中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
的文档都位于顶部。
我如何获得有序地图?
答案 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支持。