如何在Marklogic中写入不等于查询?

时间:2012-05-10 08:47:21

标签: xml xquery marklogic

我有以下xml结构: -

<patent-assignors>
  <patent-assignor>
    <name>VOLPENHEIN, ROBERT A.</name>
    <execution-date>
      <date>19841204</date>
    </execution-date>
  </patent-assignor>
</patent-assignors>

<patent-assignees>
  <patent-assignee>
    <name>PROCTER &amp; GAMBLE COMPANY, THE</name>
    <address-2>A CORP. OF  OHIO</address-2>
    <city>CINCINNATI</city>
    <state>OHIO</state>
  </patent-assignee>
</patent-assignees>

我想返回专利转让人名称不等于专利受让人名称的记录。但我不想使用where子句,因为它会减慢查询速度。我想在搜索本身中过滤结果。我怎么能这样做?

1 个答案:

答案 0 :(得分:2)

这适用于提供的示例。没有与多个受让人一起测试,或探索过性能。

/patent[patent-assignors/patent-assignor/name != patent-assignees/patent-assignee/name]

基于

xdmp:document-insert('/patent.xml',
  <patent>
    <patent-assignors>
      <patent-assignor>
        <name>VOLPENHEIN, ROBERT A.</name>
        <execution-date>
          <date>19841204</date>
        </execution-date>
      </patent-assignor>
    </patent-assignors>
    <patent-assignees>
      <patent-assignee>
        <name>PROCTER &amp; GAMBLE COMPANY, THE</name>
        <address-2>A CORP. OF  OHIO</address-2>
        <city>CINCINNATI</city>
        <state>OHIO</state>
      </patent-assignee>
    </patent-assignees>
  </patent>
)