如何在一个XQuery代码中获取所有MarkLogic数据库的文档计数



我们需要使用XQuery生成一个报告,其中需要数据库大小和数据库文档数(文档总数(等详细信息。

我们有下面的XQuery代码,可以从中获得数据库名称和数据库大小,但我们也希望包括AdminUI中的数据库文档计数。

for $db-id in xdmp:databases()
let $db-name := xdmp:database-name($db-id)
let $db-size :=
fn:sum(
for $f-id in xdmp:database-forests($db-id)
let $f-status := xdmp:forest-status($f-id)
let $space := $f-status/forest:device-space
let $f-name := $f-status/forest:forest-name
let $f-size :=
fn:sum(
for $stand in $f-status/forest:stands/forest:stand
let $stand-size := $stand/forest:disk-size/fn:data(.)
return $space
)
return $f-size
)
order by $db-size descending
return $db-name || " = " || $db-size

类似的东西

return $db-name || " = " || $db-size || "=" || $db-count

使用下面的命令,我们可以在一个数据库中获得文档计数(无论在QC下拉列表中选择什么(,但我需要在一个脚本中为所有数据库运行下面的命令。

xdmp:estimate(doc())

对此有什么帮助或建议吗?感谢您提前提供的帮助。

您可以使用xdmp:forest-counts()检索document-count并将它们相加,就像您对size所做的那样:

declare namespace forest = "http://marklogic.com/xdmp/status/forest";
for $db-id in xdmp:databases()
let $db-name := xdmp:database-name($db-id)
let $db-size :=
fn:sum(
for $f-id in xdmp:database-forests($db-id)
let $f-status := xdmp:forest-status($f-id)
let $space := $f-status/forest:device-space
let $f-name := $f-status/forest:forest-name
let $f-size :=
fn:sum(
for $stand in $f-status/forest:stands/forest:stand
let $stand-size := $stand/forest:disk-size/fn:data(.)
return $space
)
return $f-size
)
let $db-count := 
fn:sum(
for $forest-id in xdmp:database-forests($db-id)
let $forest-counts := xdmp:forest-counts($forest-id)
return $forest-counts/forest:document-count/fn:data(.)
)
order by $db-size descending
return $db-name || " = " || $db-size || ", " || $db-count

如果您确实想使用xdmp:estimate(doc()),那么您可以使用xdmp:invoke-function()并在选项中指定要执行的内容database

declare namespace forest = "http://marklogic.com/xdmp/status/forest";
for $db-id in xdmp:databases()
let $db-name := xdmp:database-name($db-id)
let $db-size :=
fn:sum(
for $f-id in xdmp:database-forests($db-id)
let $f-status := xdmp:forest-status($f-id)
let $space := $f-status/forest:device-space
let $f-name := $f-status/forest:forest-name
let $f-size :=
fn:sum(
for $stand in $f-status/forest:stands/forest:stand
let $stand-size := $stand/forest:disk-size/fn:data(.)
return $space
)
return $f-size
)
let $db-count := 
xdmp:invoke-function(
function(){ xdmp:estimate(doc())}, 
<options xmlns="xdmp:eval">
<database>{$db-id}</database>
</options>)
order by $db-size descending
return $db-name || " = " || $db-size || ", " || $db-count

最新更新