Обновление загруженных битемпоральных документов MarkLogic 8 в Marklogic 9

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

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

2 ответа

Для того, чтобы обновить их, вам нужно просто запустить https://docs.marklogic.com/temporal:document-insert на них с ML9. Вы должны быть в состоянии сделать это без внесения каких-либо изменений в содержимое документа для "чистого" обновления.

Чтобы сделать временные документы 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'.

Другие вопросы по тегам