У меня сложилось впечатление, что XQuery и серверные JavaScript API в MarkLogic в значительной степени эквивалентны.Но, похоже, большая разница в cts:search
против cts.search
.В cts:search
я могу указать элемент для поиска и возврата.Например, я могу получить все рецепты, используя cinnaomon в качестве ингредиента из книги рецептов:
cts:search(//recipe, cts:element-word-query(xs:QName('ingredients'), 'cinnamon'))
Принимая во внимание, что cts.search
не принимает выражение пути и возвращает весь документ книги рецептов:
cts.search(cts.elementWordQuery(xs.QName('ingredients'), 'cinnamon'))
Тот же вопрос был задан в списке рассылки MarkLogic, но я не вижу там ответа: https://developer.marklogic.com/pipermail/general/2015-March/016508.html
Ниже приведен минимальный пример:
<book>
<recipe>
<ingredients>cinnamon, peppermint</ingredients>
<instruction/>
</recipe>
<recipe>
<ingredients>sugar, peppermint</ingredients>
<instruction/>
</recipe>
<recipe>
<ingredients>coconut oil</ingredients>
<instruction/>
</recipe>
</book>
xquery будет:
cts:search(//recipe, cts:element-word-query(xs:QName('ingredients'), 'cinnamon'))
и ответ:
<recipe>
<ingredients>cinnamon, peppermint</ingredients>
<instruction></instruction>
</recipe>