Эта глава объясняет, как построить выражения, используя X DevAPI.
Работая с выражениями MySQL, используемыми в CRUD, запросы могут быть определены двумя способами. Первый должен использовать последовательности, чтобы сформулировать выражения, которые должны быть знакомыми, если вы разработали с кодом SQL. Другой метод должен использовать функциональность Expression Builder.
Определение строковых выражений прямое, поскольку их легко читать и написать. Недостаток то, что они должны быть разобраны, прежде чем они смогут быть переданы 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();
Все внедрения могут использовать синтаксис, иллюстрированный выше.
Последовательности булевого выражения могут использоваться, фильтруя
коллекции или операции по использованию таблиц, такие как
find()
и remove()
.
Выражение оценено однажды для каждого документа или строки.
Следующий пример булевого выражения использует строку
find()
, чтобы искать все документы с
атрибутом цвета red
из коллекции apples:
apples.find('color = "red"').execute()
Точно так же удалить все красные яблоки:
apples.remove('color = "red"').execute()
Последовательности выражения используются, чтобы вычислить значение,
которое может тогда быть назначено на данное поле или столбец.
Это необходимо для обоих 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()