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

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

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

Примеры

Например, можно написать запрос, который принимает upperPriceLimit в качестве параметра, и выполнить его для различных значений price на основе входных данных пользователя.

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: