#javascript #json #marklogic #mlcp #marklogic-corb
Вопрос:
У меня есть много данных, загруженных в мою базу данных, где некоторые загруженные документы не являются файлами JSON, а просто двоичными файлами. Правильные данные выглядят так: «/foo/bar/1.json», но неправильные данные находятся в формате «/foo/bar/*». Есть ли в MarkLogic механизм, использующий JavaScript, где я могу отфильтровать эти ненужные данные и удалить их? PS: Я не могу извлечь файлы с помощью mlcp, в URI которых есть»?», и, возможно, когда я пытаюсь перезагрузить эти данные, я получаю эту ошибку. Есть ли способ исправить этот отрывок вместе с этим?
Ответ №1:
Если все URI документа содержат a ?
и находятся в этом каталоге, то вы можете использовать cts.uriMatch()
declareUpdate();
for (const uri of cts.uriMatch('/foo/bar/*?*') ) {
xdmp.documentDelete(uri)
}
Кроме того, если вы хотите найти binary()
документы, вы можете применить format-binary
опцию к a cts.search()
с помощью a cts.directoryQuery()
, а затем удалить их.
declareUpdate();
for (const doc of cts.search(cts.directoryQuery("/foo/bar/"), ['format-json']) ) {
xdmp.documentDelete(fn.baseUri(doc));
}
Они, вероятно, сохраняются как двоичные, потому что нет расширения файла, когда URI заканчивается знаком вопроса и некоторыми значениями параметров строки запроса, т. е. 1.json?foo=bar
вместо 1.json
Трудно диагностировать и устранять неполадки, не видя, каковы ваши конфигурации заданий MLCP, и не зная больше о том, что вы делаете для загрузки данных.