首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用cts:元素-属性-值()函数对元素的值进行排序?

如何使用cts:元素-属性-值()函数对元素的值进行排序?
EN

Stack Overflow用户
提问于 2021-05-21 15:27:37
回答 1查看 71关注 0票数 1

REQUIREMENT:尽快获取与查询匹配的员工id (/ Employee /@id),并按连接日期(/Employee/JoiningDate)的升序排列

环境:MarkLogic DB有100万雇员XML

查询-1运行非常慢,但返回数据的顺序是正确的

代码语言:javascript
复制
let $fullQuery :=
    cts:and-query((
        cts:directory-query("/employee/", "infinity"),
        cts:element-value-query(fn:QName("","DeptName"), "Sales", ("case-insensitive")),
        cts:element-value-query(fn:QName("","SubDeptName"), "Micro", ("case-insensitive"))
    ))
let $queryOptions := ("unfiltered", cts:index-order(cts:element-reference(fn:QName("","JoiningDate"),("type=dateTime")), "ascending"))
return cts:search(/Employee, $fullQuery, $queryOptions)!fn:string(./@id) (: Using ! to get id's in sorted order. This seems to affect performance quite heavily. :)

查询-2运行非常快,但返回的数据顺序不正确

代码语言:javascript
复制
let $fullQuery :=
    cts:and-query((
        cts:directory-query("/employee/", "infinity"),
        cts:element-value-query(fn:QName("","DeptName"), "Sales", ("case-insensitive")),
        cts:element-value-query(fn:QName("","SubDeptName"), "Micro", ("case-insensitive"))
    ))
let $queryOptions := ("concurrent")
return cts:element-attribute-values(xs:QName("Employee"), xs:QName("id"), (), $queryOptions, $fullQuery)

如何使用上述两种方法之一实现需求

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-21 22:26:15

cts:value-co-occurrences将允许您按一个索引进行排序,同时从另一个索引返回值。

例如:

代码语言:javascript
复制
for $v in cts:value-co-occurrences(
  cts:element-reference(xs:QName("JoiningDate"),
  cts:element-attribute-reference(xs:QName("Employee"), xs:QName("id")),
  (), 
  $fullQuery
)
return $v/cts:value[2]/string(.)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67639800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档