Azure Cosmos DB for NoSQL のパラメーター化されたクエリ

適用対象: NoSQL

Azure Cosmos DB for NoSQL では、使い慣れた @ 表記で表されたパラメーターを使用するクエリがサポートされます。 パラメーター化された SQL により、ユーザーの入力を堅牢に処理し、流用して、SQL インジェクションによってデータが誤って開示されるリスクを回避することができます。

たとえば、パラメーターとして lastNameaddress.state を使用するクエリを記述し、ユーザーの入力に基づいて、lastNameaddress.state にさまざまな値を指定して実行できます。

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 のパラメーター化されたクエリの例を次に示します。