MarkLogic:使用选项文件对集合应用“ AND”查询

时间:2019-03-25 11:30:53

标签: marklogic marklogic-9 marklogic-dhf

我们在客户和帐单集合上启用了按时间排序,并且在客户和帐单集合的最新集合中都有客户“ 123456”。我们正在尝试使用一个选项文件从“客户”集合中提取客户的最新文档。

下面是我们编写的选项文件。

{
"options": 
  {
  "search-option": "unfiltered",
  "additional-query":[
          "<collection-query xmlns='http://marklogic.com/cts'>
          <uri>customer</uri>
          </collection-query>"
          ],
  "additional-query":[
          "<collection-query xmlns='http://marklogic.com/cts'>
          <uri>latest</uri>
          </collection-query>"
          ],
  "constraint": [
          { 
          "name": "CustomerId",
          "range": 
                         {
          "type": "xs:string",
          "collation" : "http://marklogic.com/collation/codepoint",
          "element": {"name": "CustomerId" }
                         }
          }
          ],
"extract-document-data": 
          {
          "selected": "exclude",
          "extract-path": [ "/envelope/instance/Customer" ]
          }
  }
}

当我们尝试下面的代码时,文档仍然来自客户和帐单收集。

fn.head(search.search('CustomerId:123456', 
SearchOptions.firstChild)).xpath('search:result/search:extracted/data()', 
{'search': 'http://marklogic.com/appservices/search'});
上面查询中的

SearchOptions是选项文件。

我们的理解是“附加查询”将应用AND条件,但看起来我们的理解存在一定差距。

如何在选项文件中应用AND条件以仅从“客户”集合中提取最新文档。

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用:

"additional-query":[
      "<collection-query xmlns='http://marklogic.com/cts'>
      <uri>customer</uri>
      </collection-query>",

      "<collection-query xmlns='http://marklogic.com/cts'>
      <uri>latest</uri>
      </collection-query>"
      ],

默认情况下(在顶层),它们包装在and-query中。

HTH!