Поиск объектов на xquery

Материал из ODANT Wiki
Перейти к: навигация, поиск

Поиск объектов

XQuery позволяет быстро найти нужный Объект по заданным параметрам. Поиск может быть реализован следующим способом.

string-join(
for  $a in //O
return
 $a//string (@oid),';'
)

Данный запрос выбирает все объекты класса и возвращает список их id через разделитель ';'. Для того, чтобы выбрать объекты, соответствующие определенным критериям, в запросе задается фильтр поиска.

for  $a in //O[@Поле1='Вася']

После выполнения будет получен список объектов, у которых Поле1 равно "Вася". В фильтр можно включать не только условия равенства, но и другие арифметические и логические операции:

for  $a in //O[@Дата > xs:dateTime('ГГГГ-ММ-ДДT00:00:00') and @Имя='Вася']


Поиск совпадений

Похожим образом можно осуществлять поиск дублей.

string-join(
for  $a in //O
let  $b := string-join( $a/(@Поле1,@Поле2),';')
group by  $b
return
element group
{
       attribute v { $b[1]}, $a	
}[count ( $a)>1]//string (@oid),';'
)

Данный запрос возвращает id объектов, у которых записаны одинаковые значения в полях, указанных строкой:

let  $b := string-join( $a/(@Поле1,@Поле2),';')

Ссылки: