首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MarkLogic java API join 2文档

MarkLogic java API join 2文档
EN

Stack Overflow用户
提问于 2013-05-11 00:12:43
回答 2查看 330关注 0票数 3

有没有一种方法可以利用marklogic的Java API连接MarkLogic数据库中的两个文档?

例如,假设有以下两个文档:

doc1.xml:

代码语言:javascript
复制
<a>    
    <id>123</id>
    <doc2ID>111</doc2ID>
    <first_name>John</first_name>
</a>

doc2.xml:

代码语言:javascript
复制
<b>
    <id>111</id>
    <doc1ID>123</doc1ID>
    <last_name>Smith</last_name>
    <age>25</age>
</b>

我是否可以在MarkLogic中执行以下查询:检索first name = John,last_name = Smith和age > 20的所有记录?在sql中,您可以这样做: Select a.first_name,b.last_name from doc1 a JOIN doc2 b ON (a.doc2ID = b.id) WHERE a.first_name = 'John‘,b.last_name = 'Smith’,b.age > 24

EN

回答 2

Stack Overflow用户

发布于 2013-05-11 02:02:41

如果只想将一个文档用作另一个文档的筛选器,则可以发送带有实现该子查询的自定义约束的查询选项。

如果您实际上想连接文档,则必须创建一个在cts:search()级别实现连接的资源服务扩展。

然而,后退一步,您应该考虑对文档进行反规范化,这样您就不需要像在关系数据库中那样进行连接了。上面提供的文档本质上是表行,它没有利用文档数据库的功能和灵活性。在文档数据库中使用关系模型和关系查询不是最好的方法。

票数 2
EN

Stack Overflow用户

发布于 2013-05-11 00:51:28

您的示例不是有效的xml (没有根元素),并且可能有多个子元素。如果没有有效的xml,答案就很难准确。

一般的方法是使用FLOWR表达式:

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16486498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档