Глава 10. Построение выражений
Эта глава объясняет, как построить выражения, используя X DevAPI.
Работая с выражениями MySQL, используемыми в CRUD, запросы
могут быть определены двумя способами. Первый должен использовать
последовательности, чтобы сформулировать выражения, которые должны быть
знакомыми, если вы разработали с кодом SQL.
Другой метод должен использовать функциональность Expression Builder.
10.1. Последовательности выражения
Определение строковых выражений прямое, поскольку их легко читать и
написать. Недостаток то, что они должны быть разобраны, прежде чем они смогут
быть переданы MySQL Server. Кроме того, проверка типов может быть сделана
только во время выполнения.
Код MySQL Shell JavaScript
// Using a string expression to get all documents that
// have the name field starting with 'S'
var myDocs = myColl.find('name like :name').bind('name', 'S%').execute();
Все внедрения могут использовать синтаксис, иллюстрированный выше.
10.1.1. Последовательности булевого выражения
Последовательности булевого выражения могут использоваться, фильтруя
коллекции или операции по использованию таблиц, такие как
find() и remove() .
Выражение оценено однажды для каждого документа или строки.
Следующий пример булевого выражения использует строку
find() , чтобы искать все документы с
атрибутом цвета red
из коллекции apples:
apples.find('color = "red"').execute()
Точно так же удалить все красные яблоки:
apples.remove('color = "red"').execute()
10.1.2.
Последовательности выражения
Последовательности выражения используются, чтобы вычислить значение,
которое может тогда быть назначено на данное поле или столбец.
Это необходимо для обоих modify() и
update() , а также вычисления значений
в документах во время вставки.
Использование в качестве примера последовательности выражения должно было
бы увеличить счетчик. Функция expr()
используется, чтобы обернуть последовательности, где они иначе
интерпретировались бы буквально. Например, чтобы увеличить:
// the expression is evaluated on the server
collection.modify('true').set("counter", expr("counter + 1")).execute()
Если вы не обертываете последовательность с
expr() , это назначило бы литеральную строку
"counter + 1" члену "counter":
// equivalent to directly assigning a string: counter = "counter + 1"
collection.modify('true').set("counter", "counter + 1").execute()
|