Обновление MarkLogic 8 загруженных битемпоральных документов в Marklogic 9 - PullRequest
0 голосов
/ 27 июня 2018

Есть ли способ обновить битемпоральные документы, которые принимались в MarkLogic-8 в Marklogic-9? В настоящее время временное обновление API работает только для документов, которые принимаются в ML-9 или более поздней версии. Пожалуйста, предложите. Генерируется следующая ошибка:

Метаданные TemporalDocURI не найдены. Встроенные функции обновления временного узла работают только для временных документов, созданных с ML9 или новее

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

Чтобы сделать временные документы ML-8 обновляемыми в ML-9, нам нужно добавить новые метаданные «temporalDocURI» в существующий URI документа, где мы хотим выполнить обновление.

Пример кода:

let $uri := "/documents/test.xml"
return xdmp:document-put-metadata(
$uri,map:map(<map:map xmlns:map="http://marklogic.com/xdmp/map">
  <map:entry key="temporalDocURI">
    <map:value>{$uri}</map:value>
  </map:entry>
</map:map>))

Как только метаданные добавлены в битемпоральный документ, который мы хотим обновить, временный интерфейс для обновления или вставки узла будет работать для всех документов, вставленных до ML-9.

Примечание Чтобы API-интерфейс 'xdmp: document-put-metadata' работал с временными документами, ему потребуется привилегия переопределения для временной коллекции, к которой принадлежит временный документ, и если пользователь делает изменение не является правами администратора, затем необходимо добавить привилегию гранулярного выполнения для пользователя и затем выполнить 'xdmp: document-put-metadata'.

0 голосов
/ 27 июня 2018

Чтобы обновить их, вам нужно просто запустить temporal: document-insert на них с ML9. Вы должны быть в состоянии сделать это без внесения каких-либо изменений в содержимое документа для «чистого» обновления.

...