【MicrosoftAzure】CosmosDBで入れ子になったJSONの値に対して検索をかける方法

こんばんは。今日は、AzureのCosmosDBのクエリ方法について学んだことを残しておきます。

それでは早速参ります。

やりたかったこと

CosmosDBのコンテナ上に、以下のようにJSONが入れ子になったデータ構造のレコードがあるとします。今回は、この入れ子部分の項目に対して検索をかけるクエリを作成したかったです。

例えば、column1中のcolumn2の値がXXXXであるレコードを全て抽出したい、といった具合です。

{
    "id":"1"
    .....
    "column1": [
        {
            "id": "1",
            "column2": "XXXX",
             ....
        },
        {
            "id": "2",
            "column2": "YYYY",
             ....
        }
    ]
}

解決方法

こちらに解説がありました!

Azure Cosmos DB での JSON の使用 | Microsoft Docs

SELECT *
FROM c
WHERE EXISTS(
    SELECT VALUE n
    FROM n IN c.column1
    WHERE n.column2 = "XXXX"
)

おしまい

この記事を気に入っていただけたらシェアをお願いします!
ABOUT US
Yuu113
初めまして。ゆうたろうと申します。 兵庫県出身、東京でシステムエンジニアをしております。現在は主にデータ分析、機械学習を活用してビジネスモデリングに取り組んでいます。 日々学んだことや経験したことを整理していきたいと思い、ブログを始めました。旅行、カメラ、IT技術、江戸文化が大好きですので、これらについても記事にしていきたいと思っています。