Как проверить максимальное / минимальное значение в документе в Marklogic с помощью xquery? - PullRequest
0 голосов
/ 22 октября 2018

Я пытаюсь выяснить, как проверить максимальное / минимальное значение атрибута метки времени в документе.

образец документа будет выглядеть примерно так:

uri 1 data:

{
createdTime:2018-10-22 10:04:00
filename: employee.txt
}

uri 2 data:

{
createdTime:2018-10-22 11:04:00
filename: employee.txt
}

Все, что мне нужно, это увидеть минимальную дату создания файла employee.txt.Как мне написать XQuery для сценария?

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

Плакат попросил Xquery.Это достаточно просто.

min(doc("file.json")//createdTime)

Если поле (строка) json отформатировано, как показано, его не нужно преобразовывать в dateTime - поскольку порядок лексической сортировки текста создает такой же порядок для этого формата,В противном случае вам нужно будет проанализировать и преобразовать в xs: dateTime

0 голосов
/ 23 октября 2018

Вы можете применить диапазон неопределенности x к созданному времени, если вы можете заставить созданное время соответствовать формату xs:dateTime (что в основном означает замену пробела между датой и временем символом 'T'в вашем случае), скорректировав свои данные.

Если это так, вы можете использовать такие функции, как cts.min и cts.max для извлечения минимального и максимальногозначения для этого свойства.

Если нет, вы можете попробовать грубую силу, получив все значения, отсортировав их как строки, а затем захватив первый и последний, но это, как правило, не очень разумно, так как это масштабируется ужасно.

Если вы не можете изменить свои данные, и brute-force также не вариант, вы можете рассмотреть возможность использования Template Driven Extraction .Это довольно сложная тема, и она может усложнить ситуацию, чем это необходимо.

HTH!

...