Azure Cosmos DB for NoSQL 中的参数化查询

适用范围: NoSQL

Azure Cosmos DB for NoSQL 支持使用带有常用 @ 表示法的参数进行查询。 参数化 SQL 为用户输入提供可靠的处理和转义,可防止通过 SQL 注入发生意外的数据泄露。

示例

例如,可以编写一个将 upperPriceLimit 用作参数的查询,并根据用户输入针对 price 的各种值执行此查询。

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

然后,可将此请求对象作为参数化 JSON 查询发送到 Azure Cosmos DB for NoSQL。

{
  "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 for NoSQL 是无架构的,因此不会针对任何类型验证参数。

下面是每个 Azure Cosmos DB for NoSQL SDK 中参数化查询的示例: