2016-03-03 2 views
5

Sto cercando di ottenere le dimensioni totali di tutte le foreste collegate a un determinato database.Per ottenere le dimensioni totali di tutte le foreste collegate a un determinato database

Usando sottostante Codice ho avuto le dimensioni di tutti i singoli foreste, ma bloccato su come realizzare la soluzione:

for $db-id in xdmp:databases() 
let $db-name := xdmp:database-name($db-id) 
for $forests in xdmp:forest-status(xdmp:database-forests(xdmp:database($db-name))) 
let $space := $forests//forest:device-space 
let $f_name := $forests//forest:forest-name 
for $stand in $forests//forest:stands 
let $f_size := fn:sum($stand/forest:stand/forest:disk-size) 

risposta

5

Penso che si sta cercando qualcosa di simile:

xquery version "1.0-ml"; 

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 $stand-size 
    ) 
    return $f-size 
) 
order by $db-size descending 
return $db-name || " = " || $db-size 

HTH !

+0

Grazie Man .. !! Ha funzionato bene ... :) –

5

È meglio chiamare xdmp:forest-status() con una sequenza di ID di foresta piuttosto che effettuare un gruppo di chiamate individuali in modo che il lavoro venga eseguito in parallelo.

xquery version "1.0-ml"; 

declare namespace fs = "http://marklogic.com/xdmp/status/forest"; 

let $include-replicas := fn:true() 
let $db := xdmp:database("MyDatabase") 
for $fs in xdmp:forest-status(xdmp:database-forests($db, $include-replicas)) 
return 
    fn:string-join(
    ($fs/fs:forest-name, fn:sum($fs/fs:stands/fs:stand/fs:disk-size)) ! fn:string(.), 
    " ") 
+0

Grazie ragazzi ... Ha funzionato bene ..... –