2013-11-22 133 views
2

最近,我不得不使用MarkLogic,還有一些我不明白的東西。Marklogic cts:文檔查詢

我不想讓你澄清關於MarkLogic我所有的顧慮只是一個:)

有一個XQuery和我不明白它做什麼。

let $pap := cts:uris(
    (),(), 
    cts:and-query((
     cts:collection-query("/pageType/collection1"), 
    )) 
) 

let $collection := ("/pageType/Attachment") 
return 
xdmp:estimate(
    cts:search(
     fn:doc(), 
     cts:and-query((
     cts:collection-query(($collection)), 
     cts:document-query($pap) 
    )) 
    ) 
) 

我有很多問題來理解文檔查詢功能的作用。

請問有人能給我啓發嗎?我是之前從事關係數據庫工作的MarkLogic的初學者。

感謝,

回答

1

我忽視回答你的第一個問題。 cts:document-query()這裏記載:

https://docs.marklogic.com/cts:document-query

在這種情況下,它充當的cts:search返回一個過濾器,只包括先前查詢找到的文檔cts:uris()

+0

早安Daldei,謝謝你的幫助!我來自關係數據庫世界,我無法在上述表達式中找到任何聯接(如product.id = sale.product_id)。也許我不需要任何這樣的鏈接,但我不明白兩個集合中的相關頁面如何能夠「找到」彼此。再次感謝,V. – Viktor

2

不要不理解這種感覺不好。它有一點鈍。並且效率低下。

如果我讀這個權利是什麼它真正做的是計數屬於兩個集合「/的pagetype/Attachement」的文件的數量和「/的pagetype/collection1」

我相信(隨便未測試)此可以通過做

xdmp被大大簡化:估計( CTS:搜索( FN:(DOC), CTS:和查詢(( CTS:收集查詢( 「/的pagetype/collection1」), cts:collection-query(「/ pageType/Attachment」) )) ) )

+1

在有些情況下,你可以使用查詢情況像這樣來實現一個連接。可能這是以這種方式開始的。 – mblakele