4.2.6  Hilfreiche XQuery Schippsel

Unsortierte Schnippsel für die MarkLogic Konsole, die an mancher Stelle hilfreich sein könnten:
Beschreibung Beispiel Code Schnippsel
Datenbank löschen
xdmp:forest-clear(

xdmp:database-forests(

xdmp:database("xml-scrapper-content")))
Über Collection iterieren
for $x in collection("/topics")
return
 (<fname>{ fn:document-uri($x) }</fname>,
 $x)
Attribut / Knoten ersetzen
for $ref in collection("/topics")//topicref
    let $topic := collection("/topics")
               [contains(fn:document-uri(.),$ref/@href)],
        $new := attribute href { $topic/topic/@id }
return 
  xdmp:node-replace($ref/@href,  $new)
Dokument "umbenennen" ↗↗
xdmp:document-insert(
  $new-uri,
  fn:doc($old-uri),
  xdmp:document-get-permissions($old-uri),
  xdmp:document-get-collections($old-uri)
 ),
 xdmp:document-delete($old-uri),
 xdmp:document-set-properties($new-uri, $properties
Über verschiedene Collections bestimmte Elemente suchen
for $element in cts:search(/descendant::*[self::b or 
                                         self::i or self::u], 
                cts:collection-query(("/topics", 
                                      "/tasks", "/maps")))
return $element/text()
Ein Element aus einem "Stack" holen und das Element vom Stack nehmen ("Pop")
let $result := ( 
  for $stack in collection("/stack-pushed")
  order by $stack/some-element/some-criterion descending
  return
    $stack)[1] 
return (
  local:render-response($result),
  xdmp:document-set-collections(fn:document-uri($result), 
                               ("/stack-popped")
Konvertierung nach JSON
let $xml:=
<tektur-dita>
{
for $x in collection("/topics")
return
 $x
}
</tektur-dita>,
    $config := json:config("full") => 
               map:with("whitespace", "preserve")
    return json:transform-to-json( $xml , $config )
Gib mir alle Dokumente, die nach dem 23.05.2019 zur (temporalen) Collection "/topics" hinzugefügt wurden
let $period := cts:period(
  xs:dateTime('0001-01-01T00:00:00'),
  xs:dateTime('2019-05-23T00:00:00')
)
return cts:search(
  collection("/topics"),
  cts:period-range-query('system-axis', 
                         'ISO_SUCCEEDS', 
                         $period)
)
cURL Parameter um eine DB zu leeren (als Array Einträge im Python Code)
args = [
  'curl',
  '-X',
  'POST',
  '--anyauth',
  '-u',
  'admin:admin',
  '--header',
  'Content-Type:application/json',
  '-d',
  '{\"operation\":\"clear-database\"}',
  'http://localhost:8002/manage/
          v2/databases/mydb']
Elementare Permissions an Dokumenten setzen; xdmp:document-update-permissions zum Aktualisieren
for $x  in collection("/my-collection")
return
 xdmp:document-set-permissions(
   fn:document-uri($x),
   ( xdmp:permission("my-role", "update"),
     xdmp:permission("my-role", "read" )))
Previous Page Next Page
Version: 92
Dec 26 2020