【发布时间】:2017-01-26 09:58:37
【问题描述】:
我正在对 marklogic 中存储的数据运行一组 xquery。当我看到结果时,我注意到数据记录的顺序与我从中加载它的文件中的顺序不同。我使用 flow studio 将我的 xml 文档加载到 marklogic 中。我需要文件的顺序与源文件中的顺序相同。有没有办法做到这一点? 或如果无法按升序顺序对文档进行排序将解决我的问题。怎么做?注意:
我想订购 xml 文档而不是 xquery 结果
【问题讨论】:
我正在对 marklogic 中存储的数据运行一组 xquery。当我看到结果时,我注意到数据记录的顺序与我从中加载它的文件中的顺序不同。我使用 flow studio 将我的 xml 文档加载到 marklogic 中。我需要文件的顺序与源文件中的顺序相同。有没有办法做到这一点? 或如果无法按升序顺序对文档进行排序将解决我的问题。怎么做?注意:
我想订购 xml 文档而不是 xquery 结果
【问题讨论】:
MarkLogic 不按特定顺序存储记录。也就是说,当记录被摄取时,您可以添加可以使用的属性或元数据元素。例如,当我从 CSV 加载行时,如果我希望能够再次按该顺序表示数据,我通常会确保每一行都有一个唯一的有序 ID。
无论如何,您将需要根据您用于检索记录的查询返回有序结果,正如您在问题的第二部分中提出的那样。
使用 FLOWR 查询数据时,您将能够使用order by ascending 子句按所需值对文档进行排序。
当您返回 search:search() 或 cts:search() 结果时,它可能会涉及更多,但底层逻辑是相似的。尝试对搜索结果进行排序时,有一些重要的性能考虑因素——通常你会想要一个排序元素上的范围索引。 ML 文档中有大量信息,具体取决于您查询要订购的记录的方式。
XQuery order by 子句:https://docs.marklogic.com/guide/xquery/langoverview#id_71283
性能指南: https://docs.marklogic.com/guide/performance/order_by
搜索中的排序:search() https://docs.marklogic.com/guide/search-dev/appendixa#id_44212
【讨论】: