Параметризованные запросы в Azure Cosmos DB для NoSQL

ОБЛАСТЬ ПРИМЕНЕНИЯ: NoSQL

Azure Cosmos DB для NoSQL поддерживает запросы с параметрами, выраженными знакомой нотацией @. Параметризованный SQL обеспечивает надежную обработку и экранирование пользовательского ввода, а также предотвращает случайное раскрытие данных через внедрение кода SQL.

Примеры

К примеру, вы можете написать запрос, принимающий lastName и address.state за параметры, и выполнить его для различных значений lastName и address.state, используя данные, введенные пользователем.

SELECT
    *
FROM
    p
WHERE
    (NOT p.onSale) AND
    (p.price BETWEEN 0 AND @upperPriceLimit)

Затем этот запрос можно отправить в Azure Cosmos DB для NoSQL в качестве параметризованного объекта запроса JSON.

{
  "query": "SELECT * FROM p WHERE (NOT p.onSale) AND (p.price BETWEEN 0 AND @upperPriceLimit)",
  "parameters": [
    {
      "name": "@upperPriceLimit",
      "value": 100
    }
  ]
}

В следующем примере задается TOP аргумент с параметризованным запросом:

{
  "query": "SELECT TOP @pageSize * FROM products",
  "parameters": [
    {
      "name": "@pageSize",
      "value": 10
    }
  ]
}

Значения параметров могут быть любым допустимым json: строками, числами, логическими значениями, null, четными массивами или вложенными JSON. Так как Azure Cosmos DB для NoSQL не является схемой, параметры не проверяются на соответствие ни одному типу.

Ниже приведены примеры параметризованных запросов в каждом пакете SDK Azure Cosmos DB для NoSQL: