我的数据库中有很多审计文件,如下所示
<Record>
<objectType>Audit</objectType>
<dateCreated>2017-04-07T03:51:56.231-04:00</dateCreated>
<createdBy>first user</createdBy>
</Record>如何获得在过去30天内创建审计文件的用户总数(CreatedBy)?有一些createdBy相同的审计文件,因此我们需要不同的值计数。
我尝试了下面的查询:
let $query := cts:values(cts:element-reference(fn:QName($NS, "createdBy")))
return fn:count($query)但是我如何使用条件dateCreated>30或cts:range-query在cts:values中。还有其他方法可以做到这一点吗?
(我已经为createdBy和dateCreated设置了元素范围索引)
发布于 2017-04-10 16:38:36
您可以将约束范围查询作为第三个参数传递给cts:count-聚合()--如下代码所示:
let $index := fn:QName($NS, "dateCreated")
let $count := cts:count-aggregate(
cts:element-reference($index),
(),
cts:element-range-query($index, ">",
fn:current-dateTime() - xs:dayTimeDuration("P30D")
)
)这将给出过去30天dateCreated值的总数。
有关更多信息,请参见:
http://docs.marklogic.com/cts:count-aggregate
https://stackoverflow.com/questions/43327176
复制相似问题