2013-05-10 42 views
3

有沒有辦法加入利用MarkLogic的Java API一個marklogic數據庫內的2個文件?MarkLogic的Java API加入2個文件

例如假設有以下2個文件:

doc1.xml:

<a>  
    <id>123</id> 
    <doc2ID>111</doc2ID> 
    <first_name>John</first_name> 
</a> 

doc2.xml:

<b> 
    <id>111</id> 
    <doc1ID>123</doc1ID> 
    <last_name>Smith</last_name> 
    <age>25</age> 
</b> 

我可以在MarkLogic以下查詢:檢索所有記錄的名字=約翰,姓氏=史密斯和年齡> 20? 在SQL你會做這樣的事情: 選擇a.first_name,b.last_name從文檔1一個JOIN DOC2 B關於(a.doc2ID = b.id)WHERE a.first_name = '約翰' 和b.last_name =「史密斯'和b.age> 24

回答

0

你的樣品是無效xml(無根元素)和推測有一個以上的子元素。沒有有效的xml其答案很難準確。

一般的方法是使用一個FLOWR表達:

for $master in doc("doc1.xml")//something, 
    $detail in doc("doc2.xml")//something 
where $master/doc2ID = $detail/id 
return ($master/first_name/string(), $detail/last_name/string()) 
+0

我糾正了我的xml。 – user2370664 2013-05-10 17:28:55

+0

這看起來像的XQuery,是不是僅適用於Java的XCC Java API中 – user2370664 2013-05-10 17:29:49

+0

XQuery是可以通過資源擴展Java客戶端API,現在ServerEvaluationCall英寸 – 2017-09-18 16:52:12

2

如果你只是想用一個文件作爲另一種過濾器,你可以用它實現了子查詢定製約束髮送查詢選項。

如果你真的想加入的文件,你必須創建一個實現在CTS的加入資源服務擴展:搜索()的水平。

退一步,但是,你應該考慮非規範化文檔,這樣你就不需要加入儘可能多的,你會在關係數據庫中。上面提供的文檔基本上是錶行,它沒有利用文檔數據庫的強大功能和靈活性。使用關係模型和關係查詢不是文檔數據庫中的最佳方法。