【问题标题】:Convert MarkLogic xcc cts queryto post cts query将 MarkLogic xcc cts 查询转换为 post cts 查询
【发布时间】:2018-01-30 12:23:46
【问题描述】:

Marklogic 9 及更高版本不再支持.NET 应用程序的 xcc 连接,应使用 rest api。

我一直在研究 POC,并通过 REST API 公开我的数据库实例,为每个数据库创建 REST API 实例。我还能够使用 GET 进行简单的搜索查询。我也使用了 PUT 和 DELETE。

我的问题是将现有的 140+ cts 查询转换为 xml 正文。有一个示例here,但使用了一个简单的 cts 查询,我需要一些帮助来将更复杂的查询转换为 xml 正文 - 所以我可以将这些查询用于我创建的 api。

例如:

如何在 xml 中编写这个 cts 查询?

<ArrayOfRecord>
{{
cts:search(collection('Records{0}')/Record,
cts:and-query((
cts:element-range-query(xs:QName('CreatedOn'), '>=', xs:dateTime('{1}')),
cts:element-range-query(xs:QName('CreatedOn'), '<=', xs:dateTime('{2}')),
cts:path-range-query('/Record/IsLatestVersion', '=', 
'{3}')additionalQueries)))   
}}
</ArrayOfRecord>

谢谢

【问题讨论】:

  • 如果您已经有了要执行的 sn-ps 代码,如何将它们保存为 .xqy 文本文档到特定于应用程序的模块数据库中,然后通过 HTTP 调用调用它们。您不需要使用 REST-api,尽管它确实提供了一些对您的情况可能有用也可能没有用的便利..
  • 感谢您的回答,我曾考虑过该选项,但这不是我想要在这里实现的目标。

标签: xml rest marklogic marklogic-9


【解决方案1】:

您展示的是搜索,而不仅仅是cts:query,但如果您只想将cts:query 序列化为XML,您可以使用这样的技巧: &lt;wrapper&gt;{your query constructor here}&lt;/wrapper&gt;

例如:

xquery version "1.0-ml";
<wrapper>{cts:word-query("foo")}</wrapper>/*

另一种可能(可能与 Dave Cassel 对您的建议过于相似)是使用 REST Client API eval 端点。您可以使用它来执行即席 XQuery(或服务器端 JavaScript),就像启用 XCC 一样。看看这个:http://docs.marklogic.com/REST/POST/v1/eval

【讨论】:

    猜你喜欢
    • 2013-12-07
    • 2016-09-20
    • 1970-01-01
    • 2018-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多