Azureの小ネタ (改)

~Azureネタを中心に、色々とその他の技術的なことなどを~

DocumentDBのクエリ制限的なもの

Document DBのクエリ制限は、以下の書かれてます。

azure.microsoft.com

翻訳は以下。

https://blogs.technet.microsoft.com/jpitpro/2015/10/05/azure-documentdb/

  • ANDは20個まで
  • ORは10個まで
  • JOINは5個まで
  • UDFは2個まで
  • クエリページ毎に取得できるアイテムが無制限になった

まあ、通常使うキモはAND、OR、JOINの数でしょうか。JOINの数が5までってことは、6階層以上の深さをもつスキーマにクエリかけられないことを意味してる気がします。

あと地味にひっかかったが、JOINした要素に対してORDER BYがサポートされていないことでした。

{
  "id": "hoge",
  "items": [
    {
      "no": 3,
      "name": "hoge"
    },
    {
      "no": 2,
      "name": "fuga"
    },
    {
      "no": 1,
      "name": "baka"
    }
  ]
}

こんなデータがあったとき、

SELECT item.name FROM c 
JOIN item in c.items
WHERE c.id = "hoge"
ORDER BY item.no

Noでソートできません。 Order-by over correlated collections is not supported というエラーで怒られます。stackoverflow でもちらほら似た質問が散見されますからみな同じところで引っかかるんでしょうね。