Что же такое RQL
- вторник, 4 июля 2017 г. в 19:11:07
eq(author,Перумов) или в обычном формате URL: author=Перумов.[
{ title: "Эльфийский клинок", year: 1993, series: "Кольцо тьмы" },
{ title: "Чёрное копьё", year: 1993, series: "Кольцо тьмы" },
{ title: "Адамант Хенны", year: 1995, series: "Кольцо тьмы" },
{ title: "Воин Великой Тьмы", year: 1995, series: "Летописи Хьёрварда" }
]db.users.find({series: "Кольцо тьмы"})eq(series, "Кольцо тьмы")series="Кольцо тьмы"db.users.find({series: "Кольцо тьмы", year: 1995})eq(series, "Кольцо тьмы"),eq(year, 1995){ title: "Воин Великой Тьмы", year: 1995, series: "Летописи Хьёрварда", translations: { language: "English", title: "Godsdoom" } }translations. И чтобы найти все книги переведенные на английский язык, нам надо использовать точку.db.users.find({"translations.language": "English"})eq(translations.language, "English")db.users.find().skip(10).limit(10)limit(10,10)db.users.find().sort({title: 1})sort(+title) | Функция | Описание | Примеры |
|---|---|---|
| in (<propеrty>,<array-of-values>) | Выбирает объекты, у которых значение указанного свойства входит в заданный массив свойств. |
in(name,(Silver,Gold)) |
| out (<propеrty>,<array-of-values>) | Выбирает объекты, у которых значение указанного свойства не входит в заданный массив свойств. | out(name,(Platinum,Gold)) |
| limit (<stаrt>,<numbеr>) | Возвращает заданное количество (number) объектов начиная с определённой (start) позиции. |
limit(0,2) |
| sort (<list of properties with + or — prefix>) | Сортирует список объектов по заданным свойствам (количество свойств неограниченно). Сначала список сортируется по первому из заданных свойств, затем по второму, и так далее. Порядок сортировки определяется префиксом: + — по возрастанию, — — по убыванию. |
sort(+hardware.memory,-hardware.diskspace) |
| select (<list оf attributes>) | Обрезает каждый объект до набора свойств, определенных в аргументах. | elect(name,hardware.memory,user) |
| values(<prоperty>) | Возвращает набор значений из указанного поля всех объектов | values(ve.name) |
| count() | Возвращает количество записей | in(name,(Silver,Gold))&count() |
| max(<prоperty?>) | Возвращает максимальное значение из указанного поля всех объектов | max(ve.memory) |
| min(<prоperty?>) | Возвращает минимальное значение из указанного поля всех объектов | min(ve.memory) |
| Функция | Описание | Примеры |
|---|---|---|
| like (<prоperty>, <pаttern>) | Ищет заданный паттерн (pattern) в заданном свойстве (property). Эта функция аналогична оператору SQL LIKE, хоть и использует символ * вместо %. Чтобы определить в паттерне сам символ *, он должен быть процентно-кодированным, то есть надо писать %2A вместо *, см. примеры. Кроме того, в паттерне можно использовать символ ?, обозначающий, что любой символ в этой позиции является валидным. |
like(firstName,Jo*) |
| Функция | Описание | Примеры |
|---|---|---|
| implementing (<basе-type>) | Возвращает список объектов (ресурсы и типы), реализующих базовый тип и включающих в себя сам базовый тип. | aps-standard.org/samples/user-mgmt/offer/1.0 |
| composing (<dеrived-type>) | Возвращает список типов, которые реализованы производным типом (derived type), включая сам производный тип. | aps-standard.org/samples/user-mgmt/offer/1.0 |
| linkedWith (<rеsource ID>) | Возвращает список ресурсов, которые связаны тем ресурсом, чей ID указан в качестве аргумента. APS-контроллер ищет все ссылки на ресурсы, включая внутренние системные ссылки. Например, актор admin/owner/referrer, имеющий доступ к ресурсу, тоже будет считаться «связанным» ресурсом. | linkedWith(220aa29a-4ff4-460b-963d-f4a3ba093a0a) implementing(http://aps-standard.org/types/core/user/service/1.0), linkedWith(220aa29a-4ff4-460b-963d-f4a3ba093a0a) |
| Оператор | Алиас | Примеры | Значение |
|---|---|---|---|
| and (<quеry>,<quеry>,...) | & , |
and (http://aps-standard.org/samples/user-mgmt/offer),like(name,*L*)) implementing(http://aps-standard.org/samples/user-mgmt/offer)&like(name,*L*)) implementing(http://aps-standard.org/samples/user-mgmt/offer),like(name,*L*)) |
Выбирает все предложения (offers), имена которых соответствуют нечувствительному к регистру паттерну *L* |
| or (<quеry>,<quеry>,...) | | ; |
implementing(http://aps-standard.org/samples/user-mgmt/offer1.0)&or(like(description,*free*),in(name,(Silver,Gold))) | Выбирает все предложения (offers), описания (description) которых соответствуют паттерну *free*, а также те, чьё имя Silver или Gold. |
| Оператор | Алиас | Примеры | Значение |
|---|---|---|---|
| not (<quеry>) | implementing(http://aps-standard.org/samples/user-mgmt/offer),not(like(name,*free*)) | Выбирает все предложения (offers), за исключением тех, чьё имя соответствует Хабр и Гиктаймс — RQL паттерну *free*. |
and является неявным RQL-оператором верхнего уровня. Например, выражение http://hosting.com?and(arg1,arg2,arg3) эквивалентно http://hosting.com?arg1,arg2,arg3.implementing(<typе>),(prop1=eq=1|prop2=ge=2).| Оператор | Алиас | Примеры | Значение |
|---|---|---|---|
| eq (<propеrty>,<valuе>) | =eq= | eq(aps.status,aps:ready) |
Выбирает все объекты, чей aps.status имеет значение aps:ready. |
| ne (<propеrty>,<valuе>) | =ne= | ne(aps.status,aps:ready) |
Выбирает все объекты, чей aps.status имеет значение aps:ready. |
| gt (<propеrty>,<valuе>) | =gt= | implementing(http://aps-standard.org/samples/user-mgmt/offer),hardware.memory=gt=1024) | Выбирает все предложения (offers), предоставляющие hardware.memory больше 1024. |
| ge (<propеrty>,<valuе>) | =ge= | implementing(http://aps-standard.org/samples/user-mgmt/offer),hardware.memory=ge=1024) | Выбирает все предложения (offers), предоставляющие hardware.memory больше или равно 1024. |
| lt (<propеrty>,<valuе>) | =lt= | implementing(http://aps-standard.org/samples/user-mgmt/offer),hardware.CPU.number=lt=16) | Выбирает все предложения (offers), предоставляющие hardware.CPU.number меньше 16. |
| le (<propеrty>,<valuе>) | =le= | implementing(http://aps-standard.org/samples/user-mgmt/offer),hardware.CPU.number=le=16) | Выбирает все предложения (offers), предоставляющие hardware.CPU.number меньше или равно 16. |
null, true, false или пустое строковое значение. Все они применимы к определённым типам данных.| Функция-значение | Применимые типы | Описания | Примеры |
|---|---|---|---|
| null() | Любой тип | Задаётся, если значение null |
name=eq=null() |
| true() false() |
Булевы | Задаётся, если значение true или false |
disabled=eq=false() |
| empty() | Строковые | Задаётся, если строковое значение является пустым (не null, но не содержит никаких символов) |
addressPostal.extendedAddress=eq=empty() |