簡體   English   中英

如何使用 Marklogic 為 TDE 做集合

[英]How to do collections-not for TDE with Marklogic

我正在尋找如何實現集合,而不是 Marklogic TDE。

CTS 查詢的等效項是

cts:not-query(cts:collection-query("archived"))

根據TDE 文檔,它只支持ANDOR集合。 我正在尋找具有 TDE 架構的NOT集合。

編輯:我將樣本從: '.. = "include"..'更改為'... != "exclude"...'它們都有效。 但是,對於問題的上下文,不等於在示例中更有意義。

看起來很奇怪,您要求的功能不可用。 但是,有一種方法可以利用上下文來幫助您。 首先,設置一個集合或者集合范圍還是不錯的,這樣我們就可以最小化樣本集來分析上下文路徑。

該方法是在上下文中使用 xPath 和 xQuery 作為過濾器。

以下是查詢控制台的工作示例。 請不要使用';' 在代碼中,因為它是一個多語句示例。

xquery version "1.0-ml";

let $_ := xdmp:document-insert("/llamas/Jalliue.xml", <llama><name>Jalliue</name></llama>, map:new()=>map:with("collections", ("llama", "include")))
let $_ := xdmp:document-insert("/llamas/Sven.xml", <llama><name>Sven</name></llama>, map:new()=>map:with("collections", ("llama", "exclude")))
return ();



let $docs := (fn:doc("/llamas/Jalliue.xml"), fn:doc("/llamas/Sven.xml"))

let $template := 
<template xmlns="http://marklogic.com/xdmp/tde">
  <description>llama list</description>
  <context>/llama[xdmp:node-collections(.) != "exclude"]</context>
  <rows>
    <row>
      <schema-name>llama</schema-name>
      <view-name>list</view-name>
      <columns>
        <column>
          <name>name</name>
          <scalar-type>string</scalar-type>
          <val>name</val>
        </column>
      </columns>
    </row>
  </rows>
</template>

return tde:node-data-extract($docs, $template)

結果表明,這兩個文檔都被考慮了,但只解析了包含“include”集合的文檔。

{
  "/llamas/Jalliue.xml": [
    {
      "row": {
      "schema": "llama", 
      "view": "list", 
      "data": {
        "rownum": "1", 
        "name": "Jalliue"
        }
      }
    }
  ], 
  "/llamas/Sven.xml": []
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM