2016-09-28 60 views
-1

我在MarkLogic中運行XQuery。數據庫中xml文檔的數量是764.查詢返回結果的文檔數是382,這是數據庫中可用文檔數的一半。我已經嘗試了簡單的代碼,以確保這是實際發生的事情:Marklogic:執行查詢時跳過xml文檔

declare namespace rec="http://apa.org/pimain"; 

for $record at $index in /rec:Record 
return $index 

最後$index我得到的是382,我確信實例的數據庫數量爲764。有任何想法嗎?

對於數據加載我已經使用了Information Studio。這些都是攝取設置 ingestion

的權限 permissions

用戶是nobody

+0

count(/ rec:Record)返回什麼? – Chondrops

+0

它返回'382' –

回答

1

這是你question-的重新發布

Marklogic: How to know the number of records returned by an xquery?

您提供了一個我想,還有更多的信息,所以這很好。

鑑於您獲得了的fn:count(/rec:Record)這聽起來像是您在命名空間,文檔結構或權限方面存在問題。

權限可以通過知道您是否以具有管理員權限的用戶身份執行XQuery或其他用戶來排除。如果您以另一個用戶的身份運行它,請確保文檔全部加載了該用戶的讀取權限。 xdmp:document-get-permissions($uri)可以幫助您...查看docs.marklogic.com獲取更多幫助。

當您點擊查詢控制檯「Explore」按鈕時,您看到多少條記錄?這可以給你一些見解。

您希望數據庫中有764個文檔,那麼從fn:count(fn:doc())返回什麼?這將返回數據庫中文檔的數量。如果您獲得了期望的764以外的任何內容,那麼您需要提供有關如何加載記錄的更多信息,因爲您沒有預期的文檔數量。

另一個嘗試的代碼片段,尤其是如果你在數據庫中有其他文檔的話,那就試試fn:count(/*:Record)。無論命名空間如何,這將返回包含<Record>父元素的任何文檔的計數。如果你得到764,你的文檔的一半加載了與聲明不同的命名空間,但是父節點的元素是相同的<Record>

+0

我已經添加了關於攝取和權限設置的更多信息 –

+0

您是否熟悉查詢控制檯?這將有助於瞭解您使用我建議的代碼段在數據庫中看到的文檔數量。需要確認數據庫中真的有764條記錄才能開始。 –

+0

我檢查了這一點,發現記錄是xml文檔和元數據記錄的組合。它加載了382個xml文檔,每個文檔中一個元數據文件的總數是764. –

1

您將顯示(不建議使用的)Information Studio流程的屏幕截圖。這是一個方便的小工具,可以跟蹤哪些文件在何時加載。它使用了(也被棄用的)ticket system。這些文檔將被放入與票證ID相匹配的集合中,並且還將獲得具有票證信息的文檔屬性。您可能有382個文檔和382個屬性片段。添加這些,你會得到你觀察到的764個計數,但你的數據庫中只有382個文檔。

HTH!

+0

我認爲這是最可能的問題。您可以進入管理界面(端口8001),選擇您的內容數據庫並查看狀態選項卡進行驗證。你會看到單獨的計數文件和片段。我希望你會看到382個文件和764個片段。 –

+0

沒有想到這一點。必須是這個問題。 s.e,我強烈建議你使用MLCP來加載數據......你會對結果感到高興。 –